Refactor SOYC to reduce memory footprint.
Before: correlations from parents get copied to every single child SourceInfoCorrelation, using lots of extra memory.
After: SourceInfoCorrelations have parent pointers, and the list of correlations is computed on demand, saving a lot of memory.
Other changes:
- Got rid of the idea of merging and having more than one correlation of a given type per node. These features were only used in practice a couple of minor cases (static evaluation of string concats, for example).
- Generally, not routing through JProgram to create child nodes.
- Cleaned up a couple of wrongful/wonky attributes.
- Output is nearly identical after this change.
http://gwt-code-reviews.appspot.com/1352804/show
Review by: cromwellian@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9747 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java b/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java
index 7ad6d56..51bab4b 100644
--- a/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java
+++ b/dev/core/src/com/google/gwt/core/ext/soyc/impl/StoryRecorder.java
@@ -187,7 +187,7 @@
// Possibly create and record Members
if (!sourceInfoSeen.contains(info)) {
sourceInfoSeen.add(info);
- for (Correlation c : info.getPrimaryCorrelationsArray()) {
+ for (Correlation c : info.getCorrelations()) {
if (c == null) {
continue;
}
@@ -345,7 +345,7 @@
if (!storyCache.containsKey(info)) {
SortedSet<Member> members = new TreeSet<Member>(
Member.TYPE_AND_SOURCE_NAME_COMPARATOR);
- for (Correlation c : info.getAllCorrelations()) {
+ for (Correlation c : info.getCorrelations()) {
Member m = membersByCorrelation.get(c);
if (m != null) {
members.add(m);
@@ -353,7 +353,7 @@
}
String literalType = null;
- Correlation literalCorrelation = info.getPrimaryCorrelation(Axis.LITERAL);
+ Correlation literalCorrelation = info.getCorrelation(Axis.LITERAL);
if (literalCorrelation != null) {
literalType = literalCorrelation.getLiteral().getDescription();
}
diff --git a/dev/core/src/com/google/gwt/dev/jjs/SourceInfo.java b/dev/core/src/com/google/gwt/dev/jjs/SourceInfo.java
index 72aeb07..7e914e9 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/SourceInfo.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/SourceInfo.java
@@ -18,8 +18,6 @@
import com.google.gwt.dev.jjs.Correlation.Axis;
import java.io.Serializable;
-import java.util.List;
-import java.util.Set;
/**
* Tracks file and line information for AST nodes.
@@ -32,53 +30,28 @@
void addCorrelation(Correlation c);
/**
- * Copy any Correlations from another SourceInfo node if there are no
- * Correlations on this SourceInfo with the same Axis.
+ * Return the Correlation that has been set for a given Axis, or
+ * <code>null</code> if no Correlation has been set on the given axis.
*/
- void copyMissingCorrelationsFrom(SourceInfo other);
+ Correlation getCorrelation(Axis axis);
/**
- * Returns all Correlations applied to this SourceInfo, its parent, additional
- * ancestor SourceInfo, and any supertype SourceInfos.
+ * Returns the Correlations added along each Axis on which a Correlation has
+ * been set. Some entries may be null and should be ignored.
*/
- List<Correlation> getAllCorrelations();
-
- /**
- * Returns all Correlations along a given axis applied to this SourceInfo, its
- * parent, additional ancestor SourceInfo, and any supertype SourceInfos.
- */
- List<Correlation> getAllCorrelations(Axis axis);
+ Correlation[] getCorrelations();
/**
* Returns the correlation factory that created this node.
*/
- CorrelationFactory getCorrelationFactory();
-
+ CorrelationFactory getCorrelator();
+
int getEndPos();
String getFileName();
SourceOrigin getOrigin();
- /**
- * Returns the first Correlation that had been set with a given Axis, or
- * <code>null</code> if no Correlation has been set on the given axis.
- */
- Correlation getPrimaryCorrelation(Axis axis);
-
- /**
- * Returns the first Correlations added along each Axis on which a Correlation
- * has been set.
- */
- Set<Correlation> getPrimaryCorrelations();
-
- /**
- * Returns the first Correlations added along each Axis on which a Correlation
- * has been set. Some entries may be null and should be ignored. The returned
- * array must not be modified.
- */
- Correlation[] getPrimaryCorrelationsArray();
-
int getStartLine();
int getStartPos();
@@ -96,11 +69,4 @@
* Correlations from this node.
*/
SourceInfo makeChild(SourceOrigin origin);
-
- /**
- * Add additional ancestor SourceInfos. These SourceInfo objects indicate that
- * a merge-type operation took place or that the additional ancestors have a
- * containment relationship with the SourceInfo.
- */
- void merge(SourceInfo... sourceInfos);
}
diff --git a/dev/core/src/com/google/gwt/dev/jjs/SourceInfoCorrelation.java b/dev/core/src/com/google/gwt/dev/jjs/SourceInfoCorrelation.java
index 19d8d90..320376e 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/SourceInfoCorrelation.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/SourceInfoCorrelation.java
@@ -19,12 +19,6 @@
import com.google.gwt.dev.jjs.CorrelationFactory.RealCorrelationFactory;
import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.EnumSet;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
/**
* Tracks file and line information for AST nodes.
@@ -33,16 +27,7 @@
*/
public class SourceInfoCorrelation implements SourceInfo, Serializable {
- private static final int numCorrelationAxes = Axis.values().length;
-
- private static int numCorrelationAxes() {
- return numCorrelationAxes;
- }
-
- /**
- * Any Correlation associated with the SourceInfo.
- */
- private final List<Correlation> allCorrelations;
+ private static final int NUM_AXES = Axis.values().length;
/**
* Holds the origin data for the SourceInfo.
@@ -50,79 +35,74 @@
private final SourceOrigin origin;
/**
+ * My parent node, or <code>null</code> if I have no parent.
+ */
+ private final SourceInfoCorrelation parent;
+
+ /**
* Records the first Correlation on any given Axis applied to the SourceInfo.
* Each index of this array corresponds to the Correlation.Axis with the same
* ordinal().
*/
- private final Correlation[] primaryCorrelations;
+ private Correlation[] primaryCorrelations = null;
public SourceInfoCorrelation(SourceOrigin origin) {
this.origin = origin;
- allCorrelations = new ArrayList<Correlation>();
- primaryCorrelations = new Correlation[numCorrelationAxes()];
+ this.parent = null;
}
private SourceInfoCorrelation(SourceInfoCorrelation parent,
SourceOrigin origin) {
this.origin = origin;
- this.allCorrelations = new ArrayList<Correlation>(parent.allCorrelations);
- primaryCorrelations = parent.primaryCorrelations.clone();
+ this.parent = parent;
}
/**
* Add a Correlation to the SourceInfo.
*/
public void addCorrelation(Correlation c) {
- if (!isAlreadyInAllCorrelations(c)) {
- allCorrelations.add(c);
+ if (primaryCorrelations == null) {
+ primaryCorrelations = new Correlation[NUM_AXES];
}
-
int index = c.getAxis().ordinal();
- if (primaryCorrelations[index] == null) {
- primaryCorrelations[index] = c;
- }
+ primaryCorrelations[index] = c;
}
- /**
- * Copy any Correlations from another SourceInfo node if there are no
- * Correlations on this SourceInfo with the same Axis.
- */
- public void copyMissingCorrelationsFrom(SourceInfo other) {
- EnumSet<Axis> toAdd = EnumSet.allOf(Axis.class);
- for (Correlation c : allCorrelations) {
- toAdd.remove(c.getAxis());
- }
-
- for (Correlation c : other.getAllCorrelations()) {
- if (toAdd.contains(c.getAxis())) {
- addCorrelation(c);
+ public Correlation getCorrelation(Axis axis) {
+ if (primaryCorrelations != null) {
+ Correlation c = primaryCorrelations[axis.ordinal()];
+ if (c != null) {
+ return c;
}
}
- }
-
- /**
- * Returns all Correlations applied to this SourceInfo, its parent, additional
- * ancestor SourceInfo, and any supertype SourceInfos.
- */
- public List<Correlation> getAllCorrelations() {
- return allCorrelations;
- }
-
- /**
- * Returns all Correlations along a given axis applied to this SourceInfo, its
- * parent, additional ancestor SourceInfo, and any supertype SourceInfos.
- */
- public List<Correlation> getAllCorrelations(Axis axis) {
- List<Correlation> toReturn = new ArrayList<Correlation>();
- for (Correlation c : getAllCorrelations()) {
- if (c.getAxis() == axis) {
- toReturn.add(c);
- }
+ if (parent != null) {
+ return parent.getCorrelation(axis);
}
- return toReturn;
+ return null;
}
- public CorrelationFactory getCorrelationFactory() {
+ public Correlation[] getCorrelations() {
+ if (parent == null) {
+ if (primaryCorrelations == null) {
+ return new Correlation[NUM_AXES];
+ } else {
+ return primaryCorrelations.clone();
+ }
+ } else {
+ Correlation[] result = parent.getCorrelations();
+ if (primaryCorrelations != null) {
+ for (int i = 0; i < NUM_AXES; ++i) {
+ Correlation c = primaryCorrelations[i];
+ if (c != null) {
+ result[i] = c;
+ }
+ }
+ }
+ return result;
+ }
+ }
+
+ public CorrelationFactory getCorrelator() {
return RealCorrelationFactory.INSTANCE;
}
@@ -138,32 +118,6 @@
return origin;
}
- /**
- * Returns the first Correlation that had been set with a given Axis, or
- * <code>null</code> if no Correlation has been set on the given axis.
- */
- public Correlation getPrimaryCorrelation(Axis axis) {
- return primaryCorrelations[axis.ordinal()];
- }
-
- /**
- * Returns the first Correlations added along each Axis on which a Correlation
- * has been set.
- */
- public Set<Correlation> getPrimaryCorrelations() {
- HashSet<Correlation> toReturn = new HashSet<Correlation>();
- for (Correlation c : primaryCorrelations) {
- if (c != null) {
- toReturn.add(c);
- }
- }
- return toReturn;
- }
-
- public Correlation[] getPrimaryCorrelationsArray() {
- return primaryCorrelations;
- }
-
public int getStartLine() {
return getOrigin().getStartLine();
}
@@ -172,12 +126,6 @@
return getOrigin().getStartPos();
}
- /**
- * If data accumulation is enabled, create a derived SourceInfo object that
- * indicates that one or more AST nodes were merged to create a new node. The
- * derived node will inherit its Origin and Correlations from the SourceInfo
- * object on which the method is invoked.
- */
public SourceInfo makeChild() {
return new SourceInfoCorrelation(this, this.origin);
}
@@ -186,46 +134,8 @@
return new SourceInfoCorrelation(this, origin);
}
- /**
- * Add additional ancestor SourceInfos. These SourceInfo objects indicate that
- * a merge-type operation took place or that the additional ancestors have a
- * containment relationship with the SourceInfo.
- */
- public void merge(SourceInfo... sourceInfos) {
- for (SourceInfo info : sourceInfos) {
- if (this == info) {
- continue;
- }
-
- for (Correlation c : info.getAllCorrelations()) {
- if (!isAlreadyInAllCorrelations(c)) {
- allCorrelations.add(c);
- }
- }
-
- for (Correlation c : info.getPrimaryCorrelations()) {
- int i = c.getAxis().ordinal();
- if (primaryCorrelations[i] == null) {
- primaryCorrelations[i] = c;
- }
- }
- }
- }
-
@Override
public String toString() {
return origin.toString();
}
-
- private boolean isAlreadyInAllCorrelations(Correlation c) {
- // make sure this correlations is not yet in the allCorrelations list
- boolean alreadyThere = false;
- Iterator<Correlation> it = allCorrelations.iterator();
- while ((alreadyThere == false) && (it.hasNext())) {
- if (it.next().equals(c)) {
- alreadyThere = true;
- }
- }
- return alreadyThere;
- }
}
diff --git a/dev/core/src/com/google/gwt/dev/jjs/SourceOrigin.java b/dev/core/src/com/google/gwt/dev/jjs/SourceOrigin.java
index eaf3f8e..1a3b7d7 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/SourceOrigin.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/SourceOrigin.java
@@ -21,10 +21,8 @@
import java.util.Collections;
import java.util.LinkedHashMap;
-import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
-import java.util.Set;
/**
* Describes where a SourceInfo's node came from. This class currently includes
@@ -83,6 +81,8 @@
}
});
+ private static final Correlation[] NO_CORRELATIONS = new Correlation[0];
+
/**
* Creates SourceOrigin nodes.
*/
@@ -127,9 +127,6 @@
public void addCorrelation(Correlation c) {
}
- public void copyMissingCorrelationsFrom(SourceInfo other) {
- }
-
@Override
public boolean equals(Object o) {
if (!(o instanceof SourceOrigin)) {
@@ -141,15 +138,15 @@
&& fileName.equals(other.fileName);
}
- public List<Correlation> getAllCorrelations() {
- return Collections.emptyList();
+ public Correlation getCorrelation(Axis axis) {
+ return null;
}
- public List<Correlation> getAllCorrelations(Axis axis) {
- return Collections.emptyList();
+ public Correlation[] getCorrelations() {
+ return NO_CORRELATIONS;
}
- public CorrelationFactory getCorrelationFactory() {
+ public CorrelationFactory getCorrelator() {
return DummyCorrelationFactory.INSTANCE;
}
@@ -165,18 +162,6 @@
return this;
}
- public Correlation getPrimaryCorrelation(Axis axis) {
- return null;
- }
-
- public Set<Correlation> getPrimaryCorrelations() {
- return Collections.emptySet();
- }
-
- public Correlation[] getPrimaryCorrelationsArray() {
- return new Correlation[0];
- }
-
public int getStartLine() {
return startLine;
}
@@ -199,9 +184,6 @@
return origin;
}
- public void merge(SourceInfo... sourceInfos) {
- }
-
@Override
public String toString() {
return getFileName() + '(' + getStartLine() + ')';
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
index 658fbd4..aa3977f 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JProgram.java
@@ -337,11 +337,6 @@
private final Map<JMethod, JMethod> instanceToStaticMap = new IdentityHashMap<JMethod, JMethod>();
- /**
- * The root intrinsic source info.
- */
- private final SourceInfo intrinsic;
-
private IdentityHashMap<JReferenceType, JsonObject> castableTypeMaps;
private JField nullField;
@@ -399,7 +394,6 @@
JProgram.class.getName())));
this.correlator = correlator;
- intrinsic = createSourceInfo(0, getClass().getName());
}
public void addEntryMethod(JMethod entryPoint) {
@@ -801,10 +795,6 @@
return type.getJavahSignatureName() + "_classLit";
}
- public CorrelationFactory getCorrelator() {
- return correlator;
- }
-
public List<JDeclaredType> getDeclaredTypes() {
return allTypes;
}
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java b/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java
index 26c1558..d0c0a46 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/BuildTypeMap.java
@@ -21,6 +21,7 @@
import com.google.gwt.dev.jjs.HasSourceInfo;
import com.google.gwt.dev.jjs.InternalCompilerException;
import com.google.gwt.dev.jjs.SourceInfo;
+import com.google.gwt.dev.jjs.SourceOrigin;
import com.google.gwt.dev.jjs.ast.JClassType;
import com.google.gwt.dev.jjs.ast.JConstructor;
import com.google.gwt.dev.jjs.ast.JDeclaredType;
@@ -227,7 +228,7 @@
JMethod newMethod = processMethodBinding(b, enclosingType, info);
SourceInfo methodInfo = makeSourceInfo(methodDeclaration, newMethod);
mapParameters(newMethod, methodDeclaration, methodInfo);
- info.addCorrelation(program.getCorrelator().by(newMethod));
+ info.addCorrelation(info.getCorrelator().by(newMethod));
if (newMethod.isNative()) {
processNativeMethod(methodDeclaration, info, enclosingType, newMethod);
@@ -262,7 +263,7 @@
JField field = program.createEnumField(info,
String.valueOf(binding.name), (JEnumType) enclosingType,
(JClassType) type, binding.original().id);
- info.addCorrelation(program.getCorrelator().by(field));
+ info.addCorrelation(info.getCorrelator().by(field));
typeMap.put(binding, field);
return field;
}
@@ -294,28 +295,22 @@
HasSourceInfo enclosing) {
int startLine = Util.getLineNumber(methodDecl.sourceStart,
currentSeparatorPositions, 0, currentSeparatorPositions.length - 1);
- SourceInfo toReturn = program.createSourceInfo(methodDecl.sourceStart,
+ SourceOrigin toReturn = SourceOrigin.create(methodDecl.sourceStart,
methodDecl.bodyEnd, startLine, currentFileName);
-
- // The SourceInfo will inherit Correlations from its enclosing object
if (enclosing != null) {
- toReturn.copyMissingCorrelationsFrom(enclosing.getSourceInfo());
+ return enclosing.getSourceInfo().makeChild(toReturn);
}
-
return toReturn;
}
private SourceInfo makeSourceInfo(Statement stmt, HasSourceInfo enclosing) {
int startLine = Util.getLineNumber(stmt.sourceStart,
currentSeparatorPositions, 0, currentSeparatorPositions.length - 1);
- SourceInfo toReturn = program.createSourceInfo(stmt.sourceStart,
+ SourceOrigin toReturn = SourceOrigin.create(stmt.sourceStart,
stmt.sourceEnd, startLine, currentFileName);
-
- // The SourceInfo will inherit Correlations from its enclosing object
if (enclosing != null) {
- toReturn.copyMissingCorrelationsFrom(enclosing.getSourceInfo());
+ return enclosing.getSourceInfo().makeChild(toReturn);
}
-
return toReturn;
}
@@ -581,9 +576,10 @@
}
}
- private JDeclaredType createExternalType(String name,
- ReferenceBinding binding) {
- SourceInfo sourceInfo = makeBinarySourceInfo(binding, program);
+ private JDeclaredType createExternalType(String name, ReferenceBinding binding) {
+ char[] chars = binding.getFileName();
+ String fileName = chars == null ? "" : String.valueOf(chars);
+ SourceInfo sourceInfo = SourceOrigin.create(0, fileName);
JDeclaredType type = createType(name, sourceInfo, binding);
typeMap.put(binding, type);
return type;
@@ -613,7 +609,7 @@
JField field = program.createField(info, String.valueOf(binding.name),
enclosingType, type, binding.isStatic(), disposition);
typeMap.put(binding, field);
- info.addCorrelation(program.getCorrelator().by(field));
+ info.addCorrelation(info.getCorrelator().by(field));
return field;
}
@@ -623,7 +619,7 @@
SourceInfo info = enclosingType.getSourceInfo().makeChild();
JField field = program.createField(info, String.valueOf(binding.name),
enclosingType, type, false, disposition);
- info.addCorrelation(program.getCorrelator().by(field));
+ info.addCorrelation(info.getCorrelator().by(field));
if (binding.matchingField != null) {
typeMap.put(binding.matchingField, field);
}
@@ -709,7 +705,7 @@
"ReferenceBinding is not a class, interface, or enum.");
}
- info.addCorrelation(program.getCorrelator().by(newType));
+ info.addCorrelation(info.getCorrelator().by(newType));
/**
* We emulate static initializers and instance initializers as methods.
@@ -722,7 +718,7 @@
program.getTypeVoid(), false, true, true, true, false);
clinit.freezeParamTypes();
clinit.setSynthetic();
- child.addCorrelation(program.getCorrelator().by(clinit));
+ child.addCorrelation(info.getCorrelator().by(clinit));
if (newType instanceof JClassType) {
child = info.makeChild();
@@ -730,7 +726,7 @@
program.getTypeVoid(), false, false, true, true, false);
init.freezeParamTypes();
init.setSynthetic();
- child.addCorrelation(program.getCorrelator().by(init));
+ child.addCorrelation(info.getCorrelator().by(init));
}
newType.setExternal(linker.isExternalType(newType.getName()));
@@ -778,13 +774,6 @@
return type;
}
- private SourceInfo makeBinarySourceInfo(ReferenceBinding typeBinding,
- JProgram program) {
- char[] chars = typeBinding.getFileName();
- String fileName = chars == null ? "" : String.valueOf(chars);
- return program.createSourceInfo(-1, fileName);
- }
-
private void mapParameters(JMethod method, AbstractMethodDeclaration x,
SourceInfo info) {
MethodBinding b = x.binding;
@@ -824,7 +813,7 @@
assert (type.getMethods().get(2) == getClassMethod);
getClassMethod.freezeParamTypes();
getClassMethod.setSynthetic();
- info.addCorrelation(program.getCorrelator().by(getClassMethod));
+ info.addCorrelation(info.getCorrelator().by(getClassMethod));
}
if (binding.isNestedType() && !binding.isStatic()
@@ -943,7 +932,7 @@
addThrownExceptions(b, newCtor);
- info.addCorrelation(program.getCorrelator().by(newCtor));
+ info.addCorrelation(info.getCorrelator().by(newCtor));
if (declaringClass.isNestedType() && !declaringClass.isStatic()) {
// add synthetic args for locals
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
index a346f4c..f727a48 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/GenerateJavaAST.java
@@ -2126,7 +2126,7 @@
}
addThrownExceptions(jdtBridgeMethod, bridgeMethod);
bridgeMethod.freezeParamTypes();
- info.addCorrelation(program.getCorrelator().by(bridgeMethod));
+ info.addCorrelation(info.getCorrelator().by(bridgeMethod));
// create a call
JMethodCall call = new JMethodCall(info, new JThisRef(info, clazz),
@@ -2472,13 +2472,10 @@
private SourceInfo makeSourceInfo(Statement x) {
int startLine = Util.getLineNumber(x.sourceStart,
currentSeparatorPositions, 0, currentSeparatorPositions.length - 1);
- SourceInfo toReturn = program.createSourceInfo(x.sourceStart,
- x.sourceEnd, startLine, currentFileName);
- if (currentClass != null) {
- toReturn.copyMissingCorrelationsFrom(currentClass.getSourceInfo());
- }
+ SourceOrigin toReturn = SourceOrigin.create(x.sourceStart, x.sourceEnd,
+ startLine, currentFileName);
if (currentMethod != null) {
- toReturn.copyMissingCorrelationsFrom(currentMethod.getSourceInfo());
+ return currentMethod.getSourceInfo().makeChild(toReturn);
}
return toReturn;
}
@@ -2859,12 +2856,12 @@
SourceInfo typeInfo = type.getSourceInfo().makeChild();
JClassType mapClass = program.createClass(typeInfo, type.getName()
+ "$Map", false, true);
- typeInfo.addCorrelation(program.getCorrelator().by(mapClass));
+ typeInfo.addCorrelation(typeInfo.getCorrelator().by(mapClass));
mapClass.setSuperClass(program.getTypeJavaLangObject());
SourceInfo fieldInfo = typeInfo.makeChild();
mapField = program.createField(fieldInfo, "$MAP", mapClass,
program.getJavaScriptObject(), true, Disposition.FINAL);
- fieldInfo.addCorrelation(program.getCorrelator().by(mapField));
+ fieldInfo.addCorrelation(fieldInfo.getCorrelator().by(mapField));
SourceInfo methodInfo = typeInfo.makeChild();
JMethodCall call = new JMethodCall(methodInfo, null,
@@ -2876,7 +2873,7 @@
JMethod clinit = program.createMethod(methodInfo, "$clinit", mapClass,
program.getTypeVoid(), false, true, true, true, false);
clinit.freezeParamTypes();
- methodInfo.addCorrelation(program.getCorrelator().by(clinit));
+ methodInfo.addCorrelation(methodInfo.getCorrelator().by(clinit));
JBlock clinitBlock = ((JMethodBody) clinit.getBody()).getBlock();
clinitBlock.addStmt(declStmt);
mapField.setInitializer(declStmt);
@@ -2907,7 +2904,7 @@
JArrayType enumArrayType = program.getTypeArray(type);
valuesField = program.createField(fieldInfo, "$VALUES", type,
enumArrayType, true, Disposition.FINAL);
- fieldInfo.addCorrelation(program.getCorrelator().by(valuesField));
+ fieldInfo.addCorrelation(fieldInfo.getCorrelator().by(valuesField));
List<JExpression> initializers = new ArrayList<JExpression>();
for (JEnumField field : type.getEnumList()) {
JFieldRef fieldRef = new JFieldRef(fieldInfo, null, field, type);
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java
index 062c1b1..84cc483 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/JsoDevirtualizer.java
@@ -144,7 +144,7 @@
}
newMethod.freezeParamTypes();
newMethod.addThrownExceptions(objectMethod.getThrownExceptions());
- sourceInfo.addCorrelation(program.getCorrelator().by(newMethod));
+ sourceInfo.addCorrelation(sourceInfo.getCorrelator().by(newMethod));
// Build from bottom up.
JMethodCall condition = new JMethodCall(sourceInfo, null,
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java b/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java
index b9ce5aa..0e9345a 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/MakeCallsStatic.java
@@ -173,7 +173,6 @@
originalParamTypes.add(enclosingType.getNonNull());
originalParamTypes.addAll(x.getOriginalParamTypes());
newMethod.setOriginalTypes(x.getOriginalReturnType(), originalParamTypes);
- sourceInfo.addCorrelation(program.getCorrelator().by(newMethod));
// Move the body of the instance method to the static method
JAbstractMethodBody movedBody = x.getBody();
diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java
index 6b82869..8054c63 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ResolveRebinds.java
@@ -223,7 +223,7 @@
program.getTypeJavaLangObject().getNonNull(), false, true, true, false,
false);
toReturn.freezeParamTypes();
- info.addCorrelation(program.getCorrelator().by(toReturn));
+ info.addCorrelation(info.getCorrelator().by(toReturn));
rebindMethods.put(requestType, toReturn);
// Used in the return statement at the end
diff --git a/dev/core/src/com/google/gwt/dev/js/JsParser.java b/dev/core/src/com/google/gwt/dev/js/JsParser.java
index 3e9c96c..2a7b218 100644
--- a/dev/core/src/com/google/gwt/dev/js/JsParser.java
+++ b/dev/core/src/com/google/gwt/dev/js/JsParser.java
@@ -252,7 +252,7 @@
case TokenStream.STRING: {
SourceInfo info = makeSourceInfoDistinct(node);
- info.addCorrelation(info.getCorrelationFactory().by(Literal.STRING));
+ info.addCorrelation(info.getCorrelator().by(Literal.STRING));
return new JsStringLiteral(info, node.getString());
}
diff --git a/dev/core/src/com/google/gwt/dev/js/JsStaticEval.java b/dev/core/src/com/google/gwt/dev/js/JsStaticEval.java
index 4d6434c..d867d7b 100644
--- a/dev/core/src/com/google/gwt/dev/js/JsStaticEval.java
+++ b/dev/core/src/com/google/gwt/dev/js/JsStaticEval.java
@@ -646,7 +646,6 @@
StringBuilder result = new StringBuilder();
if (appendLiteral(result, (JsValueLiteral) arg1)
&& appendLiteral(result, (JsValueLiteral) arg2)) {
- info.merge(arg1.getSourceInfo(), arg2.getSourceInfo());
ctx.replaceMe(new JsStringLiteral(info, result.toString()));
}
}