diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java index 8ce479cb733..724be9a59ea 100644 --- a/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java +++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/CompilerOptionsImpl.java @@ -165,11 +165,6 @@ public File getWorkDir() { return compileDir.getWorkDir(); } - @Override - public boolean isCastCheckingDisabled() { - return false; - } - @Override public boolean isClassMetadataDisabled() { return false; diff --git a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java index bb1f31beb3d..b9c8336a19f 100644 --- a/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java +++ b/dev/codeserver/java/com/google/gwt/dev/codeserver/UnmodifiableCompilerOptions.java @@ -45,11 +45,6 @@ public void setAddRuntimeChecks(boolean enabled) { throw new UnsupportedOperationException(); } - @Override - public final void setCastCheckingDisabled(boolean disabled) { - throw new UnsupportedOperationException(); - } - @Override public final void setClassMetadataDisabled(boolean disabled) { throw new UnsupportedOperationException(); diff --git a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java index 09535cf7ade..3ba54d372ca 100644 --- a/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java +++ b/dev/core/src/com/google/gwt/dev/PrecompileTaskOptionsImpl.java @@ -129,11 +129,6 @@ public String getSourceMapFilePrefix() { return sourceMapFilePrefix; } - @Override - public boolean isCastCheckingDisabled() { - return jjsOptions.isCastCheckingDisabled(); - } - @Override public boolean isClassMetadataDisabled() { return jjsOptions.isClassMetadataDisabled(); @@ -213,11 +208,6 @@ public void setAddRuntimeChecks(boolean enabled) { jjsOptions.setAddRuntimeChecks(enabled); } - @Override - public void setCastCheckingDisabled(boolean disabled) { - jjsOptions.setCastCheckingDisabled(disabled); - } - @Override public void setClassMetadataDisabled(boolean disabled) { jjsOptions.setClassMetadataDisabled(disabled); @@ -401,6 +391,7 @@ public boolean shouldJDTInlineCompileTimeConstants() { public boolean shouldOptimizeDataflow() { return jjsOptions.shouldOptimizeDataflow(); } + @Override public boolean shouldOrdinalizeEnums() { return jjsOptions.shouldOrdinalizeEnums(); 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 a7da1114702..b36a11e1b08 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptions.java @@ -19,7 +19,6 @@ import com.google.gwt.dev.util.arg.OptionCheckedMode; import com.google.gwt.dev.util.arg.OptionClosureFormattedOutput; import com.google.gwt.dev.util.arg.OptionClusterSimilarFunctions; -import com.google.gwt.dev.util.arg.OptionDisableCastChecking; import com.google.gwt.dev.util.arg.OptionDisableClassMetadata; import com.google.gwt.dev.util.arg.OptionEnableAssertions; import com.google.gwt.dev.util.arg.OptionEnableClosureCompiler; @@ -49,7 +48,7 @@ */ public interface JJSOptions extends OptionOptimize, OptionClusterSimilarFunctions, OptionIncrementalCompile, OptionDisableClassMetadata, - OptionDisableCastChecking, OptionEnableAssertions, OptionInlineLiteralParameters, + OptionEnableAssertions, OptionInlineLiteralParameters, OptionOptimizeDataflow, OptionRunAsyncEnabled, OptionScriptStyle, OptionSoycEnabled, OptionSoycDetailed, OptionJsonSoycEnabled, OptionOrdinalizeEnums, OptionRemoveDuplicateFunctions, OptionStrict, 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 0f8aa737c12..69f202bdce9 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JJSOptionsImpl.java @@ -33,7 +33,6 @@ public class JJSOptionsImpl implements JJSOptions, Serializable { private boolean clusterSimilarFunctions = true; private boolean incrementalCompile = false; private boolean compilerMetricsEnabled = false; - private boolean disableCastChecking = false; private boolean disableClassMetadata = false; private boolean enableAssertions; private int fragmentCount = -1; @@ -63,7 +62,6 @@ public JJSOptionsImpl() { public void copyFrom(JJSOptions other) { setAddRuntimeChecks(other.shouldAddRuntimeChecks()); - setCastCheckingDisabled(other.isCastCheckingDisabled()); setClassMetadataDisabled(other.isClassMetadataDisabled()); setClosureCompilerEnabled(other.isClosureCompilerEnabled()); setClusterSimilarFunctions(other.shouldClusterSimilarFunctions()); @@ -126,11 +124,6 @@ public SourceLevel getSourceLevel() { return sourceLevel; } - @Override - public boolean isCastCheckingDisabled() { - return disableCastChecking; - } - @Override public boolean isClassMetadataDisabled() { return disableClassMetadata; @@ -190,11 +183,6 @@ public void setAddRuntimeChecks(boolean enabled) { addRuntimeChecks = enabled; } - @Override - public void setCastCheckingDisabled(boolean disabled) { - disableCastChecking = disabled; - } - @Override public void setClassMetadataDisabled(boolean disabled) { disableClassMetadata = disabled; 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 b507c649a7d..c61a6311b85 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java +++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java @@ -481,13 +481,11 @@ protected TypeMapper normalizeSemantics() { ComputeExhaustiveCastabilityInformation.exec(jprogram); } else { // If trivial casts are pruned then one can use smaller runtime castmaps. - ComputeCastabilityInformation.exec(jprogram, options.isCastCheckingDisabled(), - !shouldOptimize() /* recordTrivialCasts */); + ComputeCastabilityInformation.exec(jprogram, !shouldOptimize() /* recordTrivialCasts */); } - ImplementCastsAndTypeChecks.exec(jprogram, options.isCastCheckingDisabled(), - shouldOptimize() /* pruneTrivialCasts */); - ArrayNormalizer.exec(jprogram, options.isCastCheckingDisabled()); + ImplementCastsAndTypeChecks.exec(jprogram, shouldOptimize() /* pruneTrivialCasts */); + ArrayNormalizer.exec(jprogram); EqualityNormalizer.exec(jprogram); TypeMapper typeMapper = getTypeMapper(); diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java index 0c10cb12125..75d07c9921d 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ArrayNormalizer.java @@ -49,8 +49,7 @@ private class ArrayVisitor extends JModVisitor { @Override public void endVisit(JBinaryOperation x, Context ctx) { - if (disableCastChecking || x.getOp() != JBinaryOperator.ASG || - !(x.getLhs() instanceof JArrayRef)) { + if (x.getOp() != JBinaryOperator.ASG || !(x.getLhs() instanceof JArrayRef)) { return; } JArrayRef arrayRef = (JArrayRef) x.getLhs(); @@ -202,22 +201,19 @@ private JIntLiteral getTypeCategoryLiteral(JType type) { } } - public static void exec(JProgram program, boolean disableCastChecking) { - new ArrayNormalizer(program, disableCastChecking).execImpl(); + public static void exec(JProgram program) { + new ArrayNormalizer(program).execImpl(); } - private final boolean disableCastChecking; private final JMethod initDim; private final JMethod initDims; private final JMethod initValues; private final JProgram program; private final JMethod setCheckMethod; - private ArrayNormalizer(JProgram program, boolean disableCastChecking) { + private ArrayNormalizer(JProgram program) { this.program = program; - this.disableCastChecking = disableCastChecking; setCheckMethod = program.getIndexedMethod("Array.setCheck"); - initDim = program.getIndexedMethod("Array.initDim"); initDims = program.getIndexedMethod("Array.initDims"); initValues = program.getIndexedMethod("Array.initValues"); diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java index 7dfada8fd28..2b2b6d52c2a 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ComputeCastabilityInformation.java @@ -151,7 +151,7 @@ public void endVisit(JBinaryOperation x, Context ctx) { @Override public void endVisit(JCastOperation x, Context ctx) { - if (disableCastChecking || x.getCastType().isNullType()) { + if (x.getCastType().isNullType()) { return; } recordCast(x.getCastType(), x.getExpr()); @@ -288,28 +288,23 @@ private void recordCastInternal(JReferenceType toType, JReferenceType rhsType) { } } - public static void exec(JProgram program, boolean disableCastChecking, - boolean recordTrivialCasts) { - new ComputeCastabilityInformation(program, disableCastChecking, recordTrivialCasts).execImpl(); + public static void exec(JProgram program, boolean recordTrivialCasts) { + new ComputeCastabilityInformation(program, recordTrivialCasts).execImpl(); } - public static void exec(JProgram program, boolean disableCastChecking) { - new ComputeCastabilityInformation(program, disableCastChecking, false).execImpl(); + public static void exec(JProgram program) { + new ComputeCastabilityInformation(program, false).execImpl(); } - private final boolean disableCastChecking; - private final boolean recordTrivialCasts; private final JProgram program; private final JTypeOracle typeOracle; - private ComputeCastabilityInformation(JProgram program, boolean disableCastChecking, - boolean recordTrivialCasts) { + private ComputeCastabilityInformation(JProgram program, boolean recordTrivialCasts) { this.program = program; this.typeOracle = program.typeOracle; - this.disableCastChecking = disableCastChecking; this.recordTrivialCasts = recordTrivialCasts; } diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecks.java b/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecks.java index 866b49dd117..8e9f39838e2 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecks.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecks.java @@ -57,11 +57,6 @@ public void endVisit(JCastOperation x, Context ctx) { JType toType = x.getCastType(); JExpression expr = x.getExpr(); - // Even if disableCastChecking is enabled, we need to rescue JSOs - if (disableCastChecking && toType instanceof JReferenceType) { - // Just leave the cast in, GenerateJavaScriptAST will ignore it. - return; - } SourceInfo info = x.getSourceInfo(); if (pruneTrivialCasts && toType.isNullType()) { /** @@ -268,16 +263,14 @@ private JMethodCall implementCastOrInstanceOfOperation(SourceInfo sourceInfo, return call; } - public static void exec(JProgram program, boolean disableCastChecking, - boolean pruneTrivialCasts) { - new ImplementCastsAndTypeChecks(program, disableCastChecking, pruneTrivialCasts).execImpl(); + public static void exec(JProgram program, boolean pruneTrivialCasts) { + new ImplementCastsAndTypeChecks(program, pruneTrivialCasts).execImpl(); } - public static void exec(JProgram program, boolean disableCastChecking) { - new ImplementCastsAndTypeChecks(program, disableCastChecking, true).execImpl(); + public static void exec(JProgram program) { + new ImplementCastsAndTypeChecks(program, true).execImpl(); } - private final boolean disableCastChecking; private final boolean pruneTrivialCasts; private final JProgram program; @@ -287,10 +280,8 @@ public static void exec(JProgram program, boolean disableCastChecking) { private Map dynamicCastMethodsByTargetTypeCategory = Maps.newEnumMap(TypeCategory.class); - private ImplementCastsAndTypeChecks(JProgram program, boolean disableCastChecking, - boolean pruneTrivialCasts) { + private ImplementCastsAndTypeChecks(JProgram program, boolean pruneTrivialCasts) { this.program = program; - this.disableCastChecking = disableCastChecking; this.pruneTrivialCasts = pruneTrivialCasts; // Populate the necessary instanceOf methods. diff --git a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java index 83473cc759f..1994a95b79e 100644 --- a/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java +++ b/dev/core/src/com/google/gwt/dev/util/arg/ArgHandlerDisableCastChecking.java @@ -17,22 +17,24 @@ import com.google.gwt.util.tools.ArgHandlerFlag; +import java.util.Arrays; +import java.util.List; + /** * Enables run-time cast checking. */ public class ArgHandlerDisableCastChecking extends ArgHandlerFlag { - private final OptionDisableCastChecking option; - - public ArgHandlerDisableCastChecking(OptionDisableCastChecking option) { - this.option = option; + private OptionSetProperties setProperties; + public ArgHandlerDisableCastChecking(OptionSetProperties setProperties) { + this.setProperties = setProperties; addTagValue("-XdisableCastChecking", false); } @Override public String getPurposeSnippet() { - return "Insert run-time checking of cast operations."; + return "DEPRECATED: use checks.checkLevel instead."; } @Override @@ -42,7 +44,8 @@ public String getLabel() { @Override public boolean setFlag(boolean value) { - option.setCastCheckingDisabled(!value); + List propertyValue = Arrays.asList(value ? "ENABLED" : "DISABLED"); + setProperties.setPropertyValues("checks.type", propertyValue); return true; } @@ -53,6 +56,6 @@ public boolean isExperimental() { @Override public boolean getDefaultValue() { - return !option.isCastCheckingDisabled(); + return false; } } diff --git a/dev/core/src/com/google/gwt/dev/util/arg/OptionDisableCastChecking.java b/dev/core/src/com/google/gwt/dev/util/arg/OptionDisableCastChecking.java deleted file mode 100644 index f89630b3468..00000000000 --- a/dev/core/src/com/google/gwt/dev/util/arg/OptionDisableCastChecking.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Copyright 2009 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; - -/** - * Encapsulates a compiler option to disable runtime cast checking. - */ -public interface OptionDisableCastChecking { - boolean isCastCheckingDisabled(); - - void setCastCheckingDisabled(boolean disabled); -} diff --git a/dev/core/src/com/google/gwt/util/tools/ArgHandlerNoopDeprecatedFlag.java b/dev/core/src/com/google/gwt/util/tools/ArgHandlerNoopDeprecatedFlag.java index 3c52bd16eb6..cb1cbb8b7db 100644 --- a/dev/core/src/com/google/gwt/util/tools/ArgHandlerNoopDeprecatedFlag.java +++ b/dev/core/src/com/google/gwt/util/tools/ArgHandlerNoopDeprecatedFlag.java @@ -44,7 +44,7 @@ public boolean isUndocumented() { @Override public String getPurpose() { - return "Deprecated. Has no effect and will be removed in a future release"; + return "DEPRECATED: Has no effect and will be removed in a future release"; } @Override diff --git a/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java b/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java index 123239f8461..cb4630e540b 100644 --- a/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java +++ b/dev/core/test/com/google/gwt/dev/PrecompileTaskArgProcessorTest.java @@ -38,7 +38,7 @@ protected void setUp() throws Exception { public void testFlagBackwardCompatibility() { // Set a bunch of boolean flags using old-style tags. precompileTaskArgProcessor.processArgs("-workDir", "/tmp", "-XcompilerMetrics", - "-XdisableCastChecking", "-XdisableClassMetadata", "-XdisableClusterSimilarFunctions", + "-XdisableClassMetadata", "-XdisableClusterSimilarFunctions", "-XdisableInlineLiteralParameters", "-XdisableOptimizeDataflow", "-XdisableOrdinalizeEnums", "-XdisableRemoveDuplicateFunctions", "-XdisableRunAsync", "-XdisableSoycHtml", "-XdisableUpdateCheck", "-ea", "-XenableClosureCompiler", "-soyc", "-XsoycDetailed", @@ -47,8 +47,6 @@ public void testFlagBackwardCompatibility() { // Show that the flags were recognized and ended up modifying options. assertNotEquals( defaultOptions.isCompilerMetricsEnabled(), handledOptions.isCompilerMetricsEnabled()); - assertNotEquals( - defaultOptions.isCastCheckingDisabled(), handledOptions.isCastCheckingDisabled()); assertNotEquals( defaultOptions.isClassMetadataDisabled(), handledOptions.isClassMetadataDisabled()); assertNotEquals(defaultOptions.shouldClusterSimilarFunctions(), diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/ArrayNormalizerTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/ArrayNormalizerTest.java index d5cf3d92c35..6ecb89cab47 100644 --- a/dev/core/test/com/google/gwt/dev/jjs/impl/ArrayNormalizerTest.java +++ b/dev/core/test/com/google/gwt/dev/jjs/impl/ArrayNormalizerTest.java @@ -21,7 +21,6 @@ * Test for {@link ArrayNormalizer}. */ public class ArrayNormalizerTest extends OptimizerTestBase { - private boolean disableCastCheck = false; // TODO(rluble): add unit test for the rest of the functionality. public void testSetCheckElimination_finalTypeArray() throws Exception { @@ -35,21 +34,6 @@ public void testSetCheckElimination_finalTypeArray() throws Exception { "a[1] = new EntryPoint$A();"); } - public void testSetCheckElimination_disableCastCheck() throws Exception { - disableCastCheck = true; - addSnippetClassDecl("static class A {String name; public void set() { name = \"A\";} }"); - addSnippetClassDecl("static class B extends A { }"); - - Result result = - optimize("void", "A[] a = new A[1]; a = new B[1]; a[1] = new B();"); - result.intoString( - "EntryPoint$A[] a = Array.initDim(EntryPoint$A.class, , " + - "/* JRuntimeTypeReference */\"test.EntryPoint$A\", 1, 0, 1);", - "a = Array.initDim(EntryPoint$B.class, , " + - "/* JRuntimeTypeReference */\"test.EntryPoint$B\", 1, 0, 1);", - "a[1] = new EntryPoint$B();"); - } - public void testSetCheckPreservation_nonFinalTypeArray() throws Exception { addSnippetClassDecl("static class A {String name; public void set() { name = \"A\";} }"); addSnippetClassDecl("static class B extends A { }"); @@ -74,7 +58,7 @@ protected boolean doOptimizeMethod(TreeLogger logger, JProgram program, JMethod didChange &= TypeTightener.exec(program).didChange(); didChange &= MethodCallTightener.exec(program).didChange(); } while (didChange); - ArrayNormalizer.exec(program, disableCastCheck); + ArrayNormalizer.exec(program); return true; } } diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/FullCompileTestBase.java b/dev/core/test/com/google/gwt/dev/jjs/impl/FullCompileTestBase.java index 3f62f683973..cbc206759f3 100644 --- a/dev/core/test/com/google/gwt/dev/jjs/impl/FullCompileTestBase.java +++ b/dev/core/test/com/google/gwt/dev/jjs/impl/FullCompileTestBase.java @@ -96,7 +96,7 @@ public CharSequence getContent() { optimizeJava(); ComputeCastabilityInformation.exec(jProgram, false); ImplementCastsAndTypeChecks.exec(jProgram, false); - ArrayNormalizer.exec(jProgram, false); + ArrayNormalizer.exec(jProgram); TypeTightener.exec(jProgram); MethodCallTightener.exec(jProgram); diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecksTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecksTest.java index a1708b7a600..d963e9e3deb 100644 --- a/dev/core/test/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecksTest.java +++ b/dev/core/test/com/google/gwt/dev/jjs/impl/ImplementCastsAndTypeChecksTest.java @@ -21,7 +21,6 @@ * Test for {@link ImplementCastsAndTypeChecksTest}. */ public class ImplementCastsAndTypeChecksTest extends OptimizerTestBase { - private boolean disableCastCheck = false; // TODO(rluble): add unit test for the rest of the functionality. public void testCastCheckIntoNullCheck() throws Exception { @@ -56,7 +55,7 @@ protected boolean doOptimizeMethod(TreeLogger logger, JProgram program, JMethod didChange &= TypeTightener.exec(program).didChange(); didChange &= MethodCallTightener.exec(program).didChange(); } while (didChange); - ImplementCastsAndTypeChecks.exec(program, disableCastCheck); + ImplementCastsAndTypeChecks.exec(program); return true; } } diff --git a/dev/core/test/com/google/gwt/dev/js/JsStackEmulatorTest.java b/dev/core/test/com/google/gwt/dev/js/JsStackEmulatorTest.java index 4344807692a..2bba3e769fa 100644 --- a/dev/core/test/com/google/gwt/dev/js/JsStackEmulatorTest.java +++ b/dev/core/test/com/google/gwt/dev/js/JsStackEmulatorTest.java @@ -281,7 +281,7 @@ public CharSequence getContent() { // These passes are needed by GenerateJavaScriptAST. ComputeCastabilityInformation.exec(jProgram, false); ImplementCastsAndTypeChecks.exec(jProgram, false); - ArrayNormalizer.exec(jProgram, false); + ArrayNormalizer.exec(jProgram); TypeMapper typeMapper = new StringTypeMapper(); ResolveRuntimeTypeReferences.exec(jProgram, typeMapper, TypeOrder.FREQUENCY);