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