Revert trunk@6681  "SameParameterValue optimization,"
due to build break.

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@6686 8db76d5a-ed1c-0410-87a9-c151d255dfc7
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 b3a760d..58ee760 100644
--- a/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
+++ b/dev/core/src/com/google/gwt/dev/jjs/JavaToJavaScriptCompiler.java
@@ -85,7 +85,6 @@
 import com.google.gwt.dev.jjs.impl.ReplaceRebinds;
 import com.google.gwt.dev.jjs.impl.ReplaceRunAsyncs;
 import com.google.gwt.dev.jjs.impl.ResolveRebinds;
-import com.google.gwt.dev.jjs.impl.SameParameterValueOptimizer;
 import com.google.gwt.dev.jjs.impl.SourceGenerationVisitor;
 import com.google.gwt.dev.jjs.impl.TypeMap;
 import com.google.gwt.dev.jjs.impl.TypeTightener;
@@ -638,11 +637,7 @@
     if (isAggressivelyOptimize) {
       // inlining
       didChange = MethodInliner.exec(jprogram) || didChange;
-
-      // remove same parameters value
-      didChange = SameParameterValueOptimizer.exec(jprogram) || didChange;
     }
-    
     // prove that any types that have been culled from the main tree are
     // unreferenced due to type tightening?
 
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
deleted file mode 100644
index 5df9651..0000000
--- a/dev/core/src/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizer.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * 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.jjs.impl;
-
-import com.google.gwt.dev.jjs.ast.Context;
-import com.google.gwt.dev.jjs.ast.JBinaryOperation;
-import com.google.gwt.dev.jjs.ast.JExpression;
-import com.google.gwt.dev.jjs.ast.JMethod;
-import com.google.gwt.dev.jjs.ast.JMethodCall;
-import com.google.gwt.dev.jjs.ast.JModVisitor;
-import com.google.gwt.dev.jjs.ast.JNode;
-import com.google.gwt.dev.jjs.ast.JParameter;
-import com.google.gwt.dev.jjs.ast.JParameterRef;
-import com.google.gwt.dev.jjs.ast.JPostfixOperation;
-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 java.util.IdentityHashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Detects when same literal is passed as parameter value, and uses literal
- * instead of parameter. The unused parameter will be removed by other analyses.
- */
-public class SameParameterValueOptimizer {
-  /**
-   * Fill parameterValues map.
-   */
-  private class AnalysisVisitor extends JVisitor {
-    @Override
-    public void endVisit(JBinaryOperation x, Context ctx) {
-      if (x.isAssignment() && x.getLhs() instanceof JParameterRef) {
-        parameterValues.put(((JParameterRef) x.getLhs()).getParameter(), null);
-      }
-    }
-
-    @Override
-    public void endVisit(JMethodCall x, Context ctx) {
-      JMethod method = x.getTarget();
-      if (x.canBePolymorphic() || method.isNative()) {
-        return;
-      }
-
-      JMethod staticImpl = program.staticImplFor(method);
-      if (staticImpl != null && 
-          staticImpl.getEnclosingType().getMethods().contains(staticImpl)) {
-        // instance method is still alive.
-        return;
-      }
-
-      List<JExpression> args = x.getArgs();
-      List<JParameter> params = method.getParams();
-
-      for (int i = 0; i < args.size() && i < params.size(); i++) {
-        JParameter param = params.get(i);
-        JExpression arg = args.get(i);
-
-        if (!(arg instanceof JValueLiteral)) {
-          parameterValues.put(param, null);
-          continue;
-        }
-
-        if (!parameterValues.containsKey(param)) {
-          parameterValues.put(param, (JValueLiteral) arg);
-          continue;
-        }
-
-        JValueLiteral commonParamValue = parameterValues.get(param);
-        if (commonParamValue == null) {
-          continue;
-        }
-
-        if (!equalLiterals(commonParamValue, (JValueLiteral) arg)) {
-          parameterValues.put(param, null);
-        }
-      }
-    }
-
-    @Override
-    public void endVisit(JPostfixOperation x, Context ctx) {
-      if (x.getArg() instanceof JParameterRef) {
-        parameterValues.put(((JParameterRef) x.getArg()).getParameter(), null);
-      }
-    }
-
-    @Override
-    public void endVisit(JPrefixOperation x, Context ctx) {
-      if (x.getArg() instanceof JParameterRef) {
-        parameterValues.put(((JParameterRef) x.getArg()).getParameter(), null);
-      }
-    }
-    
-    private boolean equalLiterals(JValueLiteral l1, JValueLiteral l2) {
-      Object v1 = l1.getValueObj();
-      Object v2 = l2.getValueObj();
-      
-      if (v1 == v2) {
-        return true;
-      }
-      
-      if (v1 == null || v2 == null) {
-        return false;
-      }
-      
-      return v1.equals(v2);
-    }
-  }
-
-  /**
-   * Substitute all parameter references with expression.
-   */
-  private class SubstituteParameterVisitor extends JModVisitor {
-    private CloneExpressionVisitor cloner;
-    private final JExpression expression;
-    private final JParameter parameter;
-
-    public SubstituteParameterVisitor(JParameter parameter,
-        JExpression expression) {
-      this.parameter = parameter;
-      this.expression = expression;
-      cloner = new CloneExpressionVisitor(program);
-    }
-
-    @Override
-    public void endVisit(JParameterRef x, Context ctx) {
-      if (x.getParameter() == parameter) {
-        ctx.replaceMe(cloner.cloneExpression(expression));
-      }
-    }
-  }
-
-  public static boolean exec(JProgram program) {
-    return new SameParameterValueOptimizer(program).execImpl(program);
-  }
-
-  /**
-   * Parameter values.
-   * 
-   * If doesn't contain a parameter, then its value is unknown.
-   * If contains parameter, and value is null - the parameter's value is not the 
-   * same across all calls.
-   * If value is not null - the parameter's value is the same across all calls.
-   */
-  private Map<JParameter, JValueLiteral> parameterValues = 
-    new IdentityHashMap<JParameter, JValueLiteral>();
-
-  private final JProgram program;
-
-  private SameParameterValueOptimizer(JProgram program) {
-    this.program = program;
-  }
-
-  private boolean execImpl(JNode node) {
-    AnalysisVisitor analysisVisitor = new AnalysisVisitor();
-    analysisVisitor.accept(node);
-
-    boolean madeChanges = false;
-    for (JParameter parameter : parameterValues.keySet()) {
-      JValueLiteral valueLiteral = parameterValues.get(parameter);
-      if (valueLiteral != null) {
-        SubstituteParameterVisitor substituteParameterVisitor = 
-          new SubstituteParameterVisitor(parameter, valueLiteral);
-        substituteParameterVisitor.accept(parameter.getEnclosingMethod());
-        madeChanges |= substituteParameterVisitor.didChange();
-      }
-    }
-
-    return madeChanges;
-  }
-}
diff --git a/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java b/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java
index b87d821..50cf016 100644
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java
+++ b/dev/core/test/com/google/gwt/dev/jjs/impl/OptimizerTestBase.java
@@ -64,18 +64,15 @@
   }
 
   public static JMethod findMainMethod(JProgram program) {
-    return findMethod(program, "onModuleLoad");
-  }
-
-  public static JMethod findMethod(JProgram program, String methodName) {
     JDeclaredType mainType = program.getFromTypeMap("test.EntryPoint");
+    JMethod mainMethod = null;
     for (JMethod method : mainType.getMethods()) {
-      if (method.getName().equals(methodName)) {
-        return method;
+      if (method.getName().equals("onModuleLoad")) {
+        mainMethod = method;
+        break;
       }
     }
-    
-    return null;
+    return mainMethod;
   }
 
   /**
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
deleted file mode 100644
index 3e69927..0000000
--- a/dev/core/test/com/google/gwt/dev/jjs/impl/SameParameterValueOptimizerTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2009 Google Inc. All Rights Reserved.
-
-package com.google.gwt.dev.jjs.impl;
-
-import com.google.gwt.core.ext.UnableToCompleteException;
-import com.google.gwt.dev.jjs.ast.JMethod;
-import com.google.gwt.dev.jjs.ast.JProgram;
-
-/**
- * Test for SameParameterValueOptimizer.
- */
-public class SameParameterValueOptimizerTest extends OptimizerTestBase {
-  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){",
-        "  int j = 1;",
-        "}");
-  }
-
-  public void testDifferentParameter() throws Exception {
-    assertOptimize("foo", "static void foo(int i) { int j = i; }",
-        "foo(1); foo(2);").into(
-        "public static void foo(int i){",
-        "  int j = i;",
-        "}");
-  }
-
-  public void testNonConstParameter() throws Exception {
-    assertOptimize("foo", "static int foo(int i) { return i; }",
-        "foo(foo(1));").into(
-        "public static int foo(int i){",
-        "  return i;",
-        "}");
-  }
-
-  private OptimizationResult assertOptimize(String methodName,  
-      String methodDecl, String codeSnippet) throws UnableToCompleteException {
-    addSnippetClassDecl(methodDecl);
-    JProgram program = compileSnippet("void", codeSnippet);
-    SameParameterValueOptimizer.exec(program);
-    JMethod method = findMethod(program, methodName);
-    return new OptimizationResult(method);
-  }
-  
-  private static class OptimizationResult {
-    private final JMethod method;
-
-    public OptimizationResult(JMethod method) {
-      this.method = method;
-    }
-
-    public void into(String...expectedStrings) {
-      StringBuffer expected = new StringBuffer();
-      for (String s : expectedStrings) {
-        if (expected.length() != 0) {
-          expected.append("\n");
-        }
-        expected.append(s);
-      }
-      assertEquals(expected.toString(), method.toSource());
-    }
-  }
-}