class OptimizeParameters extends java.lang.Object implements CompilerPass, OptimizeCalls.CallGraphCompilerPass
Modifier and Type | Class and Description |
---|---|
private static class |
OptimizeParameters.Parameter
Simple container class that keeps tracks of a parameter and whether it
should be removed.
|
Modifier and Type | Field and Description |
---|---|
private AbstractCompiler |
compiler |
private java.util.List<Node> |
removedNodes |
Constructor and Description |
---|
OptimizeParameters(AbstractCompiler compiler) |
Modifier and Type | Method and Description |
---|---|
private void |
addVariableToFunction(Node function,
Node varName,
Node value)
Adds a variable to the top of a function block.
|
private static boolean |
adjustForSideEffects(java.util.List<OptimizeParameters.Parameter> parameters)
Adjust the parameters to move based on the side-effects seen.
|
private boolean |
buildParameterList(java.util.List<OptimizeParameters.Parameter> parameters,
Node cur,
Scope s) |
private static boolean |
canChangeSignature(DefinitionSite definitionSite,
SimpleDefinitionFinder defFinder) |
private Node |
eliminateCallParamAt(SimpleDefinitionFinder defFinder,
OptimizeParameters.Parameter p,
Node call,
int argIndex)
Eliminates the parameter from a function call.
|
private static Node |
eliminateFunctionParamAt(Node function,
int argIndex)
Eliminates the parameter from a function definition.
|
private boolean |
eliminateParamsAfter(Node function,
int argIndex)
Removes all formal parameters starting at argIndex.
|
private boolean |
eliminateParamsAfter(Node fnNode,
Node argNode) |
private boolean |
findFixedParameters(java.util.List<OptimizeParameters.Parameter> parameters,
Node cur)
Determine which parameters use the same expression.
|
private static boolean |
isMovableValue(Node n,
Scope s) |
private void |
optimizeCallSite(SimpleDefinitionFinder defFinder,
java.util.List<OptimizeParameters.Parameter> parameters,
Node call) |
private void |
optimizeFunctionDefinition(java.util.List<OptimizeParameters.Parameter> parameters,
Node function) |
void |
process(Node externs,
Node root)
Process the JS with root node root.
|
void |
process(Node externs,
Node root,
SimpleDefinitionFinder definitions) |
private void |
setParameterSideEffectInfo(OptimizeParameters.Parameter p,
Node value) |
private void |
tryEliminateConstantArgs(DefinitionSite defSite,
SimpleDefinitionFinder defFinder)
Eliminate parameters if they are always constant.
|
private void |
tryEliminateOptionalArgs(DefinitionSite defSite,
SimpleDefinitionFinder defFinder)
Removes any optional parameters if no callers specifies it as an argument.
|
private final AbstractCompiler compiler
private final java.util.List<Node> removedNodes
OptimizeParameters(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 canChangeSignature(DefinitionSite definitionSite, SimpleDefinitionFinder defFinder)
private void tryEliminateOptionalArgs(DefinitionSite defSite, SimpleDefinitionFinder defFinder)
private void tryEliminateConstantArgs(DefinitionSite defSite, SimpleDefinitionFinder defFinder)
private static boolean adjustForSideEffects(java.util.List<OptimizeParameters.Parameter> parameters)
private boolean findFixedParameters(java.util.List<OptimizeParameters.Parameter> parameters, Node cur)
private boolean buildParameterList(java.util.List<OptimizeParameters.Parameter> parameters, Node cur, Scope s)
private void setParameterSideEffectInfo(OptimizeParameters.Parameter p, Node value)
private static boolean isMovableValue(Node n, Scope s)
private void optimizeFunctionDefinition(java.util.List<OptimizeParameters.Parameter> parameters, Node function)
private void optimizeCallSite(SimpleDefinitionFinder defFinder, java.util.List<OptimizeParameters.Parameter> parameters, Node call)
private void addVariableToFunction(Node function, Node varName, Node value)
function
- A function node.varName
- The name of the variable.value
- The initial value of the variable.private boolean eliminateParamsAfter(Node function, int argIndex)
private static Node eliminateFunctionParamAt(Node function, int argIndex)
function
- The function nodeargIndex
- The index of the the argument to remove.private Node eliminateCallParamAt(SimpleDefinitionFinder defFinder, OptimizeParameters.Parameter p, Node call, int argIndex)
defFinder
- p
- call
- The function call nodeargIndex
- The index of the the argument to remove.