Disentangles CompilationResult from Permutation.
http://gwt-code-reviews.appspot.com/194801
Review by: bobv
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7724 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/CompilationResult.java b/dev/core/src/com/google/gwt/core/ext/linker/CompilationResult.java
index 7ce343a..cd0d96a 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/CompilationResult.java
+++ b/dev/core/src/com/google/gwt/core/ext/linker/CompilationResult.java
@@ -16,7 +16,6 @@
package com.google.gwt.core.ext.linker;
import com.google.gwt.core.ext.Linker;
-import com.google.gwt.dev.Permutation;
import java.util.Map;
import java.util.SortedMap;
@@ -27,12 +26,9 @@
* result in identical JavaScript.
*/
public abstract class CompilationResult extends Artifact<CompilationResult> {
- private final Permutation permutation;
- protected CompilationResult(Class<? extends Linker> linkerType,
- Permutation permutation) {
+ protected CompilationResult(Class<? extends Linker> linkerType) {
super(linkerType);
- this.permutation = permutation;
}
/**
@@ -48,18 +44,9 @@
public abstract String[] getJavaScript();
/**
- * Return the permutation that compiled to this result.
- */
- public Permutation getPermutation() {
- return permutation;
- }
-
- /**
* Returns the permutation ID.
*/
- public int getPermutationId() {
- return getPermutation().getId();
- }
+ public abstract int getPermutationId();
/**
* Provides values for {@link SelectionProperty} instances that are not
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/SelectionScriptLinker.java b/dev/core/src/com/google/gwt/core/ext/linker/impl/SelectionScriptLinker.java
index c5d332a..45ce6c3 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/SelectionScriptLinker.java
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/SelectionScriptLinker.java
@@ -26,8 +26,6 @@
import com.google.gwt.core.ext.linker.ScriptReference;
import com.google.gwt.core.ext.linker.SelectionProperty;
import com.google.gwt.core.ext.linker.StylesheetReference;
-import com.google.gwt.dev.cfg.BindingProperty;
-import com.google.gwt.dev.cfg.StaticPropertyOracle;
import com.google.gwt.dev.util.Util;
import com.google.gwt.dev.util.collect.HashSet;
import com.google.gwt.dev.util.collect.Lists;
@@ -163,8 +161,7 @@
+ result.getStrongName() + File.separator + i + FRAGMENT_EXTENSION));
}
- toReturn.addAll(emitSelectionInformation(result.getPermutation().getId(),
- result.getStrongName(), result.getPermutation().getPropertyOracles()));
+ toReturn.addAll(emitSelectionInformation(result.getStrongName(), result));
return toReturn;
}
@@ -434,18 +431,14 @@
}
}
- private List<Artifact<?>> emitSelectionInformation(int id, String strongName,
- StaticPropertyOracle[] staticPropertyOracles) {
+ private List<Artifact<?>> emitSelectionInformation(String strongName,
+ CompilationResult result) {
List<Artifact<?>> emitted = new ArrayList<Artifact<?>>();
- for (int propOracleId = 0; propOracleId < staticPropertyOracles.length; propOracleId++) {
- StaticPropertyOracle propOracle = staticPropertyOracles[propOracleId];
+ for (SortedMap<SelectionProperty, String> propertyMap : result.getPropertyMap()) {
TreeMap<String, String> propMap = new TreeMap<String, String>();
-
- BindingProperty[] orderedProps = propOracle.getOrderedProps();
- String[] orderedPropValues = propOracle.getOrderedPropValues();
- for (int i = 0; i < orderedProps.length; i++) {
- propMap.put(orderedProps[i].getName(), orderedPropValues[i]);
+ for (Map.Entry<SelectionProperty, String> entry : propertyMap.entrySet()) {
+ propMap.put(entry.getKey().getName(), entry.getValue());
}
emitted.add(new SelectionInformation(strongName, propMap));
}
diff --git a/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationResult.java b/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationResult.java
index b80f8bb..c8776a0 100644
--- a/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationResult.java
+++ b/dev/core/src/com/google/gwt/core/ext/linker/impl/StandardCompilationResult.java
@@ -19,7 +19,6 @@
import com.google.gwt.core.ext.linker.SelectionProperty;
import com.google.gwt.core.ext.linker.StatementRanges;
import com.google.gwt.core.ext.linker.SymbolData;
-import com.google.gwt.dev.Permutation;
import com.google.gwt.dev.jjs.PermutationResult;
import com.google.gwt.dev.util.DiskCache;
import com.google.gwt.dev.util.Util;
@@ -84,18 +83,20 @@
private final long symbolToken;
+ private final int permutationId;
+
public StandardCompilationResult(PermutationResult permutationResult) {
- super(StandardLinkerContext.class, permutationResult.getPermutation());
+ super(StandardLinkerContext.class);
byte[][] js = permutationResult.getJs();
- strongName = Util.computeStrongName(js);
+ this.strongName = Util.computeStrongName(js);
byte[] serializedSymbolMap = permutationResult.getSerializedSymbolMap();
- statementRanges = permutationResult.getStatementRanges();
- Permutation permutation = permutationResult.getPermutation();
- jsToken = new long[js.length];
+ this.statementRanges = permutationResult.getStatementRanges();
+ this.permutationId = permutationResult.getPermutation().getId();
+ this.jsToken = new long[js.length];
for (int i = 0; i < jsToken.length; ++i) {
jsToken[i] = diskCache.writeByteArray(js[i]);
}
- symbolToken = diskCache.writeByteArray(serializedSymbolMap);
+ this.symbolToken = diskCache.writeByteArray(serializedSymbolMap);
}
/**
@@ -119,6 +120,11 @@
}
@Override
+ public int getPermutationId() {
+ return permutationId;
+ }
+
+ @Override
public SortedSet<SortedMap<SelectionProperty, String>> getPropertyMap() {
return Collections.unmodifiableSortedSet(propertyValues);
}