class ShadowVariables extends java.lang.Object implements CompilerPass
var a = function() {
var b = getB();
b();
return function(y) {};
};
Normally, b would be mapped to variable L0, y would be L1.
Instead we are going to make y shadows L0 in hope of using less variables
and reusing frequently used local names.| Modifier and Type | Class and Description |
|---|---|
private class |
ShadowVariables.DoShadowVariables |
private class |
ShadowVariables.GatherReferenceInfo |
| Modifier and Type | Field and Description |
|---|---|
private java.util.Map<java.lang.String,RenameVars.Assignment> |
assignments |
private AbstractCompiler |
compiler |
private java.util.Map<Node,java.lang.String> |
deltaPseudoNameMap |
private java.util.Map<Node,java.lang.String> |
oldPseudoNameMap |
private com.google.common.collect.Multimap<Node,java.lang.String> |
scopeUpRefMap |
private java.util.SortedSet<RenameVars.Assignment> |
varsByFrequency |
private com.google.common.collect.Multimap<Var,Node> |
varToNameUsage |
| Constructor and Description |
|---|
ShadowVariables(AbstractCompiler compiler,
java.util.Map<java.lang.String,RenameVars.Assignment> assignments,
java.util.SortedSet<RenameVars.Assignment> varsByFrequency,
java.util.Map<Node,java.lang.String> pseudoNameMap) |
| Modifier and Type | Method and Description |
|---|---|
void |
process(Node externs,
Node root)
Process the JS with root node root.
|
private final com.google.common.collect.Multimap<Node,java.lang.String> scopeUpRefMap
private final AbstractCompiler compiler
private final java.util.SortedSet<RenameVars.Assignment> varsByFrequency
private final java.util.Map<java.lang.String,RenameVars.Assignment> assignments
private final java.util.Map<Node,java.lang.String> oldPseudoNameMap
private final java.util.Map<Node,java.lang.String> deltaPseudoNameMap
ShadowVariables(AbstractCompiler compiler, java.util.Map<java.lang.String,RenameVars.Assignment> assignments, java.util.SortedSet<RenameVars.Assignment> varsByFrequency, java.util.Map<Node,java.lang.String> pseudoNameMap)
assignments - Map of old variable names to its assignment Objects.varsByFrequency - Sorted variable assignments by Frequency.pseudoNameMap - The current pseudo name map so this pass can update
it accordingly.public void process(Node externs, Node root)
CompilerPassprocess in interface CompilerPassexterns - Top of external JS treeroot - Top of JS tree