Author: [email protected]
Date: Tue May 12 09:09:39 2009
New Revision: 5350
Modified:
trunk/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
Log:
BUILD FIX: restore draftCompile to its former (working) glory.
Review by: spoon (TBR)
Modified:
trunk/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
==============================================================================
--- trunk/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
(original)
+++ trunk/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
Tue May 12 09:09:39 2009
@@ -492,7 +492,7 @@
* Don't bother optimizing early if there's only one permutation.
*/
if (!singlePermutation) {
- draftOptimize(jprogram);
+ optimizeLoop(jprogram, false);
}
Set<String> rebindRequests = new HashSet<String>();
@@ -515,15 +515,14 @@
*/
jprogram.beginOptimizations();
- PerfLogger.start("draft optimize");
- Pruner.exec(jprogram, true);
+ optimizeLoop(jprogram, false);
+
/*
* Ensure that references to dead clinits are removed. Otherwise, the
* application won't run reliably.
*/
jprogram.typeOracle.recomputeAfterOptimizations();
DeadCodeElimination.exec(jprogram);
- PerfLogger.end();
}
protected static void optimize(JJSOptions options, JProgram jprogram)
@@ -536,52 +535,54 @@
jprogram.beginOptimizations();
PerfLogger.start("optimize");
- boolean didChange;
do {
if (Thread.interrupted()) {
PerfLogger.end();
throw new InterruptedException();
}
-
maybeDumpAST(jprogram);
+ } while (optimizeLoop(jprogram, options.isAggressivelyOptimize()));
+ PerfLogger.end();
+ }
- PerfLogger.start("optimize loop");
+ protected static boolean optimizeLoop(JProgram jprogram,
+ boolean isAggressivelyOptimize) {
+ PerfLogger.start("optimize loop");
- // Recompute clinits each time, they can become empty.
- jprogram.typeOracle.recomputeAfterOptimizations();
- didChange = false;
-
- // Remove unreferenced types, fields, methods, [params, locals]
- didChange = Pruner.exec(jprogram, true) || didChange;
- // finalize locals, params, fields, methods, classes
- didChange = Finalizer.exec(jprogram) || didChange;
- // rewrite non-polymorphic calls as static calls; update all call
sites
- didChange = MakeCallsStatic.exec(jprogram) || didChange;
-
- // type flow tightening
- // - fields, locals based on assignment
- // - params based on assignment and call sites
- // - method bodies based on return statements
- // - polymorphic methods based on return types of all implementors
- // - optimize casts and instance of
- didChange = TypeTightener.exec(jprogram) || didChange;
-
- // tighten method call bindings
- didChange = MethodCallTightener.exec(jprogram) || didChange;
-
- // dead code removal??
- didChange = DeadCodeElimination.exec(jprogram) || didChange;
-
- if (options.isAggressivelyOptimize()) {
- // inlining
- didChange = MethodInliner.exec(jprogram) || didChange;
- }
- // prove that any types that have been culled from the main tree are
- // unreferenced due to type tightening?
+ // Recompute clinits each time, they can become empty.
+ jprogram.typeOracle.recomputeAfterOptimizations();
+ boolean didChange = false;
+
+ // Remove unreferenced types, fields, methods, [params, locals]
+ didChange = Pruner.exec(jprogram, true) || didChange;
+ // finalize locals, params, fields, methods, classes
+ didChange = Finalizer.exec(jprogram) || didChange;
+ // rewrite non-polymorphic calls as static calls; update all call sites
+ didChange = MakeCallsStatic.exec(jprogram) || didChange;
+
+ // type flow tightening
+ // - fields, locals based on assignment
+ // - params based on assignment and call sites
+ // - method bodies based on return statements
+ // - polymorphic methods based on return types of all implementors
+ // - optimize casts and instance of
+ didChange = TypeTightener.exec(jprogram) || didChange;
+
+ // tighten method call bindings
+ didChange = MethodCallTightener.exec(jprogram) || didChange;
+
+ // dead code removal??
+ didChange = DeadCodeElimination.exec(jprogram) || didChange;
+
+ if (isAggressivelyOptimize) {
+ // inlining
+ didChange = MethodInliner.exec(jprogram) || didChange;
+ }
+ // prove that any types that have been culled from the main tree are
+ // unreferenced due to type tightening?
- PerfLogger.end();
- } while (didChange);
PerfLogger.end();
+ return didChange;
}
private static JavaToJavaScriptMap addStringLiteralMap(
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---