class OptimizeReturns extends java.lang.Object implements OptimizeCalls.CallGraphCompilerPass, CompilerPass
Modifier and Type | Field and Description |
---|---|
private AbstractCompiler |
compiler |
Constructor and Description |
---|
OptimizeReturns(AbstractCompiler compiler) |
Modifier and Type | Method and Description |
---|---|
private static boolean |
callResultsMaybeUsed(SimpleDefinitionFinder defFinder,
DefinitionSite definitionSite)
Determines if a function result might be used.
|
private static boolean |
isCall(UseSite site)
Determines if the name node acts as the function name in a call expression.
|
void |
process(Node externs,
Node root)
Process the JS with root node root.
|
void |
process(Node externs,
Node root,
SimpleDefinitionFinder definitions) |
private void |
rewriteReturns(SimpleDefinitionFinder defFinder,
Node fnNode)
For the supplied function node, rewrite all the return expressions so that:
return foo();
becomes:
foo(); return;
Useless return will be removed later by the peephole optimization passes.
|
private AbstractCompiler compiler
OptimizeReturns(AbstractCompiler compiler)
public void process(Node externs, Node root)
CompilerPass
process
in interface CompilerPass
externs
- Top of external JS treeroot
- Top of JS treepublic void process(Node externs, Node root, SimpleDefinitionFinder definitions)
process
in interface OptimizeCalls.CallGraphCompilerPass
private static boolean callResultsMaybeUsed(SimpleDefinitionFinder defFinder, DefinitionSite definitionSite)
private void rewriteReturns(SimpleDefinitionFinder defFinder, Node fnNode)
private static boolean isCall(UseSite site)