Updates the list of aggressive optimizations to be those added within the last year. Review at http://gwt-code-reviews.appspot.com/406801 Review by: scottb@google.com git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@7978 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 6ba5944..90cf5df 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
@@ -280,7 +280,7 @@ EvalFunctionsAtTopScope.exec(jsProgram, map); // (9) Optimize the JS AST. - if (options.isAggressivelyOptimize()) { + if (!options.isDraftCompile()) { boolean didChange; do { if (Thread.interrupted()) { @@ -304,7 +304,7 @@ // (10) Split up the program into fragments SyntheticArtifact dependencies = null; - if (options.isAggressivelyOptimize() && options.isRunAsyncEnabled()) { + if (options.isRunAsyncEnabled()) { ByteArrayOutputStream baos = new ByteArrayOutputStream(); CodeSplitter.exec(logger, jprogram, jsProgram, map, chooseDependencyRecorder(options.isSoycEnabled(), baos)); @@ -323,15 +323,17 @@ case OBFUSCATED: obfuscateMap = JsStringInterner.exec(jprogram, jsProgram); JsObfuscateNamer.exec(jsProgram); - if (JsStackEmulator.getStackMode(propertyOracles) == JsStackEmulator.StackMode.STRIP) { - boolean changed = false; - for (int i = 0; i < jsProgram.getFragmentCount(); i++) { - JsBlock fragment = jsProgram.getFragmentBlock(i); - changed = JsDuplicateFunctionRemover.exec(jsProgram, fragment) - || changed; - } - if (changed) { - JsUnusedFunctionRemover.exec(jsProgram); + if (options.isAggressivelyOptimize()) { + if (JsStackEmulator.getStackMode(propertyOracles) == JsStackEmulator.StackMode.STRIP) { + boolean changed = false; + for (int i = 0; i < jsProgram.getFragmentCount(); i++) { + JsBlock fragment = jsProgram.getFragmentBlock(i); + changed = JsDuplicateFunctionRemover.exec(jsProgram, fragment) + || changed; + } + if (changed) { + JsUnusedFunctionRemover.exec(jsProgram); + } } } break; @@ -529,7 +531,7 @@ ReplaceRebinds.exec(logger, jprogram, rpo); // Fix up GWT.runAsync() - if (options.isAggressivelyOptimize() && options.isRunAsyncEnabled()) { + if (options.isRunAsyncEnabled()) { ReplaceRunAsyncs.exec(logger, jprogram); CodeSplitter.pickInitialLoadSequence(logger, jprogram, module.getProperties()); @@ -673,10 +675,10 @@ // dead code removal?? didChange = DeadCodeElimination.exec(jprogram) || didChange; - if (isAggressivelyOptimize) { - // inlining - didChange = MethodInliner.exec(jprogram) || didChange; + // inlining + didChange = MethodInliner.exec(jprogram) || didChange; + if (isAggressivelyOptimize) { // remove same parameters value didChange = SameParameterValueOptimizer.exec(jprogram) || didChange; } @@ -924,7 +926,8 @@ JsFunctionClusterer clusterer = new JsFunctionClusterer(out.toString(), v.getStatementRanges()); // only cluster for obfuscated mode - if (options.getOutput() == JsOutputOption.OBFUSCATED) { + if (options.isAggressivelyOptimize() + && options.getOutput() == JsOutputOption.OBFUSCATED) { clusterer.exec(); } // rewrite top-level blocks to limit the number of statements