Remove potential sources of non determinism.
Change-Id: I69158e9dfcc6b898cd496d2772fc64dd715c92d7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java b/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
index 382212d..cf8d24d 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/ast/JTypeOracle.java
@@ -25,6 +25,7 @@
import com.google.gwt.thirdparty.guava.common.collect.ImmutableList;
import com.google.gwt.thirdparty.guava.common.collect.ImmutableSetMultimap;
import com.google.gwt.thirdparty.guava.common.collect.Iterables;
+import com.google.gwt.thirdparty.guava.common.collect.LinkedHashMultimap;
import com.google.gwt.thirdparty.guava.common.collect.Lists;
import com.google.gwt.thirdparty.guava.common.collect.Maps;
import com.google.gwt.thirdparty.guava.common.collect.Multimap;
@@ -292,7 +293,7 @@
/**
* A set of all classes in the current program.
*/
- private Set<String> allClasses = Sets.newHashSet();
+ private Set<String> allClasses = Sets.newLinkedHashSet();
/**
* A map of all classes to the set of interfaces that they could theoretically
@@ -306,7 +307,7 @@
* The set of all interfaces that are initially implemented by both a Java and
* Overlay type.
*/
- private final Set<String> dualImplInterfaces = Sets.newHashSet();
+ private final Set<String> dualImplInterfaces = Sets.newLinkedHashSet();
/**
* A map of all classes to the set of interfaces they implement,
@@ -335,7 +336,7 @@
* A map of all interfaces that are implemented by overlay types to the
* overlay type that initially implements it.
*/
- private final Map<String, String> jsoByInterface = Maps.newHashMap();
+ private final Map<String, String> jsoByInterface = Maps.newLinkedHashMap();
/**
* A mapping from the type name to the actual type instance.
@@ -1151,7 +1152,7 @@
private Map<String, JMethod> getOrCreateInstanceMethodsBySignatureForType(JClassType type) {
Map<String, JMethod> methodsBySignature = methodsBySignatureForType.get(type);
if (methodsBySignature == null) {
- methodsBySignature = Maps.newHashMap();
+ methodsBySignature = Maps.newLinkedHashMap();
JClassType superClass = type.getSuperClass();
Map<String, JMethod> parentMethods = superClass == null
? Collections.<String, JMethod>emptyMap()
@@ -1189,8 +1190,8 @@
* Computes the transitive closure of a relation.
*/
private Multimap<String, String> transitiveClosure(Multimap<String, String> relation) {
- Multimap<String, String> transitiveClosure = HashMultimap.create();
- Set<String> domain = Sets.newHashSet(relation.keySet());
+ Multimap<String, String> transitiveClosure = LinkedHashMultimap.create();
+ Set<String> domain = Sets.newLinkedHashSet(relation.keySet());
domain.addAll(relation.values());
for (String element : domain) {
expandTransitiveClosureForElement(relation, element, transitiveClosure);
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 e6a4be4..90aa0a7 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
@@ -457,7 +457,7 @@
return exec(program, addRuntimeChecks, new FullOptimizerContext(program));
}
- protected Set<JMethod> toBeMadeStatic = Sets.newHashSet();
+ protected Set<JMethod> toBeMadeStatic = Sets.newLinkedHashSet();
private final JProgram program;
private final StaticCallConverter converter;