I tried to create an AST from my big project (approximately 300k LOC). I did that in the following way:
for( file <- files(project)){
map[Statement,map[str, list[int]]] duplicate = codeDuplicateMap(createAstFromFile(file, true));
for(dup <- duplicate) {
if(dup in dups) {
dups[dup] = dups[dup] + duplicate[dup];
} else {
dups[dup] = duplicate[dup];
}
}
}
Where project
is an M3 project model, but I keep getting |plugin://rascal/src/org/rascalmpl/library/lang/java/m3/AST.rsc|(7496,375,<201,0>,<208,99>): Java("StackOverflowError","")
I also tried to did it with createAstFromEclipseProject('project://project-location')
, but that resulted in the same error.
How can I prevent this?
EDIT: Sorry, but both your suggestions don't seem to help. It still throws a Stackoverflow Error.
|plugin://rascal/src/org/rascalmpl/library/lang/java/m3/AST.rsc|(7496,375,<201,0>,<208,99>): Java("StackOverflowError","")
at java.util.HashMap.hash(|unknown:///HashMap.java|(0,0,<338,0>,<338,0>))
at java.util.HashMap.get(|unknown:///HashMap.java|(0,0,<556,0>,<556,0>))
at org.rascalmpl.value.type.TypeStore.lookupConstructor(|unknown:///TypeStore.java|(0,0,<485,0>,<485,0>))
at org.rascalmpl.value.type.TypeStore.lookupConstructor(|unknown:///TypeStore.java|(0,0,<547,0>,<547,0>))
I also increased my stack to 128m without any result either.
After running into the same problem (which in my case was not solved by increasing the stack size), I found that setting the collectBindings argument to false
prevents the stack overflow at the cost of some information in the resulting AST.
Detailed info (from Jurgen) on what collectBindings does can be found here