mirror of
https://github.com/github/codeql.git
synced 2026-02-23 18:33:42 +01:00
JavaScript: Extract tokens and comments before AST.
This allows us to discard token/comment information sooner, thereby reducing heap pressure for very large files.
This commit is contained in:
@@ -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<Token>(), new ArrayList<Comment>());
|
||||
ASTExtractor scriptExtractor = new ASTExtractor(lexicalExtractor, null);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user