use of com.google.javascript.jscomp.OptimizeCalls.ReferenceMap in project closure-compiler by google.
the class OptimizeParameters method process.
@Override
public void process(Node externs, Node root, ReferenceMap refMap) {
try (LogFile decisionsLog = compiler.createOrReopenIndexedLog(this.getClass(), "decisions.log")) {
// Save the LogFile into a field to avoid bucket-brigade passing it through a bunch of methods
this.decisionsLog = decisionsLog;
this.globalScope = refMap.getGlobalScope();
// Find all function nodes that are possible candidates for parameter removal.
List<ArrayList<Node>> toOptimize = new ArrayList<>();
for (Map.Entry<String, ArrayList<Node>> entry : refMap.getNameReferences()) {
String key = entry.getKey();
ArrayList<Node> refs = entry.getValue();
final CandidateAnalysis candidateAnalysis = analyzeCandidateName(key, refs);
if (candidateAnalysis.shouldConvertTaggedTemplateLiterals()) {
candidateAnalysis.convertTaggedTemplateLiterals();
}
if (candidateAnalysis.isSafeToOptimize()) {
toOptimize.add(refs);
}
}
for (Map.Entry<String, ArrayList<Node>> entry : refMap.getPropReferences()) {
String key = entry.getKey();
ArrayList<Node> refs = entry.getValue();
final CandidateAnalysis candidateAnalysis = analyzeCandidateProperty(key, refs);
if (candidateAnalysis.shouldConvertTaggedTemplateLiterals()) {
candidateAnalysis.convertTaggedTemplateLiterals();
}
if (candidateAnalysis.isSafeToOptimize()) {
toOptimize.add(refs);
}
}
for (ArrayList<Node> refs : toOptimize) {
tryEliminateOptionalArgs(refs);
}
for (ArrayList<Node> refs : toOptimize) {
tryEliminateConstantArgs(refs);
}
// tryEliminateUnusedArgs may mutate
UnusedParameterOptimizer optimizer = new UnusedParameterOptimizer();
for (ArrayList<Node> refs : toOptimize) {
optimizer.tryEliminateUnusedArgs(refs);
}
optimizer.applyChanges();
} finally {
this.decisionsLog = null;
}
}
use of com.google.javascript.jscomp.OptimizeCalls.ReferenceMap in project closure-compiler by google.
the class OptimizeParameters method process.
@Override
@VisibleForTesting
public void process(Node externs, Node root) {
checkState(compiler.getLifeCycleStage() == LifeCycleStage.NORMALIZED);
ReferenceMap refMap = OptimizeCalls.buildPropAndGlobalNameReferenceMap(compiler, externs, root);
process(externs, root, refMap);
}
use of com.google.javascript.jscomp.OptimizeCalls.ReferenceMap in project closure-compiler by google.
the class OptimizeReturns method process.
@Override
@VisibleForTesting
public void process(Node externs, Node root) {
ReferenceMap refMap = OptimizeCalls.buildPropAndGlobalNameReferenceMap(compiler, externs, root);
process(externs, root, refMap);
}
Aggregations