Add a compiler flag -XdisableRunAsync to disable code-splitting on a per-compile basis. Mainly intended for tech-demonstration and diagnostic purposes. Patch by: bobv Review by: spoon git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@4346 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/dev/core/src/com/google/gwt/dev/GWTShell.java b/dev/core/src/com/google/gwt/dev/GWTShell.java index ae8649a..785ab20 100644 --- a/dev/core/src/com/google/gwt/dev/GWTShell.java +++ b/dev/core/src/com/google/gwt/dev/GWTShell.java
@@ -37,6 +37,7 @@ import com.google.gwt.dev.shell.tomcat.EmbeddedTomcatServer; import com.google.gwt.dev.util.Util; import com.google.gwt.dev.util.arg.ArgHandlerDisableAggressiveOptimization; +import com.google.gwt.dev.util.arg.ArgHandlerDisableRunAsync; import com.google.gwt.dev.util.arg.ArgHandlerEnableAssertions; import com.google.gwt.dev.util.arg.ArgHandlerExtraDir; import com.google.gwt.dev.util.arg.ArgHandlerGenDir; @@ -451,6 +452,7 @@ registerHandler(new ArgHandlerScriptStyle(options)); registerHandler(new ArgHandlerEnableAssertions(options)); registerHandler(new ArgHandlerDisableAggressiveOptimization(options)); + registerHandler(new ArgHandlerDisableRunAsync(options)); } public void addStartupURL(String url) {
diff --git a/dev/core/src/com/google/gwt/dev/Precompile.java b/dev/core/src/com/google/gwt/dev/Precompile.java index c6a1c97..0e55c39 100644 --- a/dev/core/src/com/google/gwt/dev/Precompile.java +++ b/dev/core/src/com/google/gwt/dev/Precompile.java
@@ -41,6 +41,7 @@ import com.google.gwt.dev.util.PerfLogger; import com.google.gwt.dev.util.Util; import com.google.gwt.dev.util.arg.ArgHandlerDisableAggressiveOptimization; +import com.google.gwt.dev.util.arg.ArgHandlerDisableRunAsync; import com.google.gwt.dev.util.arg.ArgHandlerEnableAssertions; import com.google.gwt.dev.util.arg.ArgHandlerGenDir; import com.google.gwt.dev.util.arg.ArgHandlerScriptStyle; @@ -76,6 +77,7 @@ registerHandler(new ArgHandlerEnableAssertions(options)); registerHandler(new ArgHandlerDisableAggressiveOptimization(options)); registerHandler(new ArgHandlerValidateOnlyFlag(options)); + registerHandler(new ArgHandlerDisableRunAsync(options)); } @Override @@ -122,6 +124,10 @@ return jjsOptions.isEnableAssertions(); } + public boolean isRunAsyncEnabled() { + return jjsOptions.isRunAsyncEnabled(); + } + public boolean isSoycEnabled() { return jjsOptions.isSoycEnabled(); } @@ -146,6 +152,10 @@ jjsOptions.setOutput(output); } + public void setRunAsyncEnabled(boolean enabled) { + jjsOptions.setRunAsyncEnabled(enabled); + } + public void setSoycEnabled(boolean enabled) { jjsOptions.setSoycEnabled(enabled); }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java b/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java index 770e932..a762504 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java
@@ -17,6 +17,7 @@ import com.google.gwt.dev.util.arg.OptionAggressivelyOptimize; import com.google.gwt.dev.util.arg.OptionEnableAssertions; +import com.google.gwt.dev.util.arg.OptionRunAsyncEnabled; import com.google.gwt.dev.util.arg.OptionScriptStyle; import com.google.gwt.dev.util.arg.OptionSoycEnabled; @@ -24,5 +25,6 @@ * Controls options for the {@link JavaToJavaScriptCompiler}. */ public interface JJSOptions extends OptionAggressivelyOptimize, - OptionEnableAssertions, OptionScriptStyle, OptionSoycEnabled { + OptionEnableAssertions, OptionRunAsyncEnabled, OptionScriptStyle, + OptionSoycEnabled { }
diff --git a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java index 5001319..d0742d4 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java
@@ -25,6 +25,7 @@ private boolean aggressivelyOptimize = true; private boolean enableAssertions; private JsOutputOption output = JsOutputOption.OBFUSCATED; + private boolean runAsyncEnabled = true; private boolean soycEnabled = false; public JJSOptionsImpl() { @@ -38,6 +39,7 @@ setAggressivelyOptimize(other.isAggressivelyOptimize()); setEnableAssertions(other.isEnableAssertions()); setOutput(other.getOutput()); + setRunAsyncEnabled(other.isRunAsyncEnabled()); setSoycEnabled(other.isSoycEnabled()); } @@ -53,6 +55,10 @@ return enableAssertions; } + public boolean isRunAsyncEnabled() { + return runAsyncEnabled; + } + public boolean isSoycEnabled() { return soycEnabled; } @@ -69,6 +75,10 @@ this.output = output; } + public void setRunAsyncEnabled(boolean enabled) { + runAsyncEnabled = enabled; + } + public void setSoycEnabled(boolean enabled) { soycEnabled = enabled; }
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 1daa7b7..d117d02 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
@@ -225,7 +225,7 @@ stringLiteralMap); // (10.5) Split up the program into fragments - if (options.isAggressivelyOptimize()) { + if (options.isAggressivelyOptimize() && options.isRunAsyncEnabled()) { CodeSplitter.exec(logger, jprogram, jsProgram, postStringInterningMap); } @@ -367,7 +367,7 @@ ReplaceRebinds.exec(logger, jprogram, rpo); // Fix up GWT.runAsync() - if (options.isAggressivelyOptimize()) { + if (options.isAggressivelyOptimize() && options.isRunAsyncEnabled()) { ReplaceRunAsyncs.exec(logger, jprogram); }
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRunAsync.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRunAsync.java new file mode 100644 index 0000000..581ba32 --- /dev/null +++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableRunAsync.java
@@ -0,0 +1,51 @@ +/* + * Copyright 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.gwt.dev.util.arg; + +import com.google.gwt.util.tools.ArgHandlerFlag; + +/** + * An ArgHandler than can be used to disable runAsync code-splitting. + */ +public class ArgHandlerDisableRunAsync extends ArgHandlerFlag { + + private final OptionRunAsyncEnabled option; + + public ArgHandlerDisableRunAsync(OptionRunAsyncEnabled option) { + this.option = option; + } + + @Override + public String getPurpose() { + return "Disable runAsync code-splitting"; + } + + @Override + public String getTag() { + return "-XdisableRunAsync"; + } + + @Override + public boolean isUndocumented() { + return true; + } + + @Override + public boolean setFlag() { + option.setRunAsyncEnabled(false); + return true; + } +}
diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionRunAsyncEnabled.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionRunAsyncEnabled.java new file mode 100644 index 0000000..78dfc7b --- /dev/null +++ b/dev/core/src/com/google/gwt/dev/util/arg/OptionRunAsyncEnabled.java
@@ -0,0 +1,26 @@ +/* + * Copyright 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.google.gwt.dev.util.arg; + +/** + * An option to control whether or not runAsync code-splitting will be employed + * by the compilation. + */ +public interface OptionRunAsyncEnabled { + boolean isRunAsyncEnabled(); + + void setRunAsyncEnabled(boolean enabled); +}