diff --git a/javascript/extractor/src/com/semmle/js/extractor/JSExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/JSExtractor.java index 1d5a14183cd..9b252011264 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/JSExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/JSExtractor.java @@ -94,12 +94,14 @@ public class JSExtractor { ASTExtractor scriptExtractor = new ASTExtractor(lexicalExtractor, scopeManager); toplevelLabel = scriptExtractor.getToplevelLabel(); - scriptExtractor.extract(ast, platform, sourceType, toplevelKind); lexicalExtractor.extractComments(toplevelLabel); loc = lexicalExtractor.extractLines(parserRes.getSource(), toplevelLabel); lexicalExtractor.extractTokens(toplevelLabel); - new CFGExtractor(scriptExtractor).extract(ast); new JSDocExtractor(textualExtractor).extract(lexicalExtractor.getComments()); + lexicalExtractor.purge(); + + scriptExtractor.extract(ast, platform, sourceType, toplevelKind); + new CFGExtractor(scriptExtractor).extract(ast); } else { lexicalExtractor = new LexicalExtractor(textualExtractor, new ArrayList(), new ArrayList()); ASTExtractor scriptExtractor = new ASTExtractor(lexicalExtractor, null); diff --git a/javascript/extractor/src/com/semmle/js/extractor/LexicalExtractor.java b/javascript/extractor/src/com/semmle/js/extractor/LexicalExtractor.java index c7c9d017cff..8716dde5b91 100644 --- a/javascript/extractor/src/com/semmle/js/extractor/LexicalExtractor.java +++ b/javascript/extractor/src/com/semmle/js/extractor/LexicalExtractor.java @@ -173,4 +173,12 @@ public class LexicalExtractor { public String mkToString(SourceElement nd) { return textualExtractor.mkToString(nd); } + + /** + * Purge token and comments information to reduce heap pressure. + */ + public void purge() { + this.tokens.clear(); + this.comments.clear(); + } }