Tightened up clinit computation.
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@1569 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
index 71949bb..c5f126e 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
@@ -322,9 +322,6 @@
AssertionRemover.exec(jprogram);
}
- // Compute which classes have clinits
- jprogram.typeOracle.computeAfterAST();
-
// Fix up GWT.create() into new operations
ReplaceRebinds.exec(jprogram);
@@ -335,6 +332,9 @@
// (4) Optimize the normalized Java AST
boolean didChange;
do {
+ // Recompute clinits each time, they can become empty.
+ jprogram.typeOracle.recomputeClinits();
+
didChange = false;
// Remove unreferenced types, fields, methods, [params, locals]
didChange = Pruner.exec(jprogram, true) || didChange;
@@ -360,11 +360,6 @@
// inlining
didChange = MethodInliner.exec(jprogram) || didChange;
- if (didChange) {
- // recompute clinits; some may now be empty
- jprogram.typeOracle.recomputeClinits();
- }
-
// prove that any types that have been culled from the main tree are
// unreferenced due to type tightening?
} while (didChange);
@@ -386,6 +381,7 @@
Pruner.exec(jprogram, false);
// (7) Generate a JavaScript code DOM from the Java type declarations
+ jprogram.typeOracle.recomputeClinits();
GenerateJavaScriptAST.exec(jprogram, jsProgram, obfuscate, prettyNames);
// (8) Fix invalid constructs created during JS AST gen
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 d62cc4b..184dd88 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
@@ -193,10 +193,6 @@
return true;
}
- public void computeAfterAST() {
- recomputeClinits();
- }
-
public void computeBeforeAST() {
javaLangObject = program.getTypeJavaLangObject();
superClassMap.clear();