Reviewers: bobv, Description: Otherwise, it can end up treating, for example, an integer as a long.
Please review this at http://gwt-code-reviews.appspot.com/126814 Affected files: dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java Index: dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java =================================================================== --- dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java (revision 7336) +++ dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java (working copy) @@ -40,6 +40,12 @@ "public static int foo(int i){", " return i;", "}"); } + public void testNumericCast() throws Exception { + assertOptimize("foo", "static void foo(long i) { long j = i; }", + "foo(1); foo(1);").into("public static void foo(long i){", + " long j = 1L;", "}"); + } + public void testSameParameter() throws Exception { assertOptimize("foo", "static void foo(int i) { int j = i; }", "foo(1); foo(1);").into("public static void foo(int i){", Index: dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java =================================================================== --- dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java (revision 7336) +++ dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java (working copy) @@ -173,7 +173,6 @@ * all calls. */ private Map<JParameter, JValueLiteral> parameterValues = new IdentityHashMap<JParameter, JValueLiteral>(); - private final JProgram program; /** @@ -183,9 +182,11 @@ * TODO: support polymorphic calls properly. */ private Set<JMethod> rescuedMethods = new HashSet<JMethod>(); + private final Simplifier simplifier; private SameParameterValueOptimizer(JProgram program) { this.program = program; + simplifier = new Simplifier(program); } private boolean execImpl(JNode node) { @@ -200,7 +201,7 @@ JValueLiteral valueLiteral = parameterValues.get(parameter); if (valueLiteral != null) { SubstituteParameterVisitor substituteParameterVisitor = new SubstituteParameterVisitor( - parameter, valueLiteral); + parameter, simplifier.cast(parameter.getType(), valueLiteral)); substituteParameterVisitor.accept(parameter.getEnclosingMethod()); madeChanges |= substituteParameterVisitor.didChange(); } -- http://groups.google.com/group/Google-Web-Toolkit-Contributors
