Reviewers: Lex,

Message:
Lex,

Please review.

Description:
SameParameterValueOptimizer should ignore methods called from native
code.

Please review this at http://gwt-code-reviews.appspot.com/141812

Affected files:
M dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java M dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java


Index: dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java diff --git a/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java b/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java index c22d483e43da32c220f52633b2b0594ee45f3cba..bdbf664616d1f68f92fa5c138c6940bf37d3483b 100644 --- a/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java +++ b/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java
@@ -29,6 +29,8 @@ import com.google.gwt.dev.jjs.ast.JPrefixOperation;
 import com.google.gwt.dev.jjs.ast.JProgram;
 import com.google.gwt.dev.jjs.ast.JValueLiteral;
 import com.google.gwt.dev.jjs.ast.JVisitor;
+import com.google.gwt.dev.jjs.ast.js.JsniMethodBody;
+import com.google.gwt.dev.jjs.ast.js.JsniMethodRef;

 import java.util.HashSet;
 import java.util.IdentityHashMap;
@@ -103,6 +105,13 @@ public class SameParameterValueOptimizer {
     }

     @Override
+    public void endVisit(JsniMethodBody x, Context ctx) {
+      for (JsniMethodRef methodRef : x.getJsniMethodRefs()) {
+        rescuedMethods.add(methodRef.getTarget());
+      }
+    }
+
+    @Override
     public boolean visit(JMethod x, Context ctx) {
       Set<JMethod> overrides = program.typeOracle.getAllOverrides(x);
       if (!overrides.isEmpty()) {
Index: dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java b/dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java index 036d71a2daa0362c76bfb294524d58cd2e99b114..196894be93c4fcd7ee7cea023d722bfe99c6cbae 100644 --- a/dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java +++ b/dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java @@ -52,6 +52,21 @@ public class SameParameterValueOptimizerTest extends OptimizerTestBase {
         "  int j = 1;", "}");
   }

+  public void testJsniReferenceSaveMethod() throws Exception {
+    addSnippetClassDecl(
+        "public static native void someStaticMethod() /*-{" +
+        "  var foo = @test.EntryPoint::foo(Ljava/lang/String;)" +
+        "}-*/");
+
+    assertOptimize(
+        "foo",
+        "static void foo(String s) { String p = s; }",
+        "foo(\"\"); foo(\"\");").into(
+        "public static void foo(String s){",
+        "  String p = s;",
+        "}");
+  }
+
   private OptimizationResult assertOptimize(String methodName,
String methodDecl, String codeSnippet) throws UnableToCompleteException {
     addSnippetClassDecl(methodDecl);


--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to