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

Reply via email to