Revert "Update "identifier name string" info through optimization feedback"

This reverts commit a6fc226c87b49fe1d211ccedfb42ede8a4a09a25.

It is failing when building the Android Platform.

Change-Id: I721c686cacecf333ac608ff126dae4bc1cbab00b
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 7e4513d..ec9b186 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -34,7 +34,6 @@
 import com.android.tools.r8.ir.code.ValueNumberGenerator;
 import com.android.tools.r8.ir.code.ValueType;
 import com.android.tools.r8.ir.conversion.DexBuilder;
-import com.android.tools.r8.ir.conversion.OptimizationFeedback;
 import com.android.tools.r8.ir.optimize.Inliner.ConstraintWithTarget;
 import com.android.tools.r8.ir.optimize.Inliner.Reason;
 import com.android.tools.r8.ir.regalloc.RegisterAllocator;
@@ -1187,11 +1186,11 @@
     optimizationInfo = info;
   }
 
-  public void copyMetadataFromInlinee(DexEncodedMethod inlinee, OptimizationFeedback feedback) {
+  public void copyMetadataFromInlinee(DexEncodedMethod inlinee) {
     checkIfObsolete();
     // Record that the current method uses identifier name string if the inlinee did so.
     if (inlinee.getOptimizationInfo().useIdentifierNameString()) {
-      feedback.markUseIdentifierNameString(this);
+      getMutableOptimizationInfo().markUseIdentifierNameString();
     }
     if (inlinee.classFileVersion > classFileVersion) {
       upgradeClassFileVersion(inlinee.getClassFileVersion());
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index fdc47c0..61c69f8 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -849,7 +849,7 @@
     }
 
     if (identifierNameStringMarker != null) {
-      identifierNameStringMarker.decoupleIdentifierNameStringsInMethod(method, code, feedback);
+      identifierNameStringMarker.decoupleIdentifierNameStringsInMethod(method, code);
       assert code.isConsistentSSA();
     }
 
@@ -870,7 +870,13 @@
     if (options.enableInlining && inliner != null) {
       // TODO(zerny): Should we support inlining in debug mode? b/62937285
       assert !options.debug;
-      inliner.performInlining(method, code, isProcessedConcurrently, callSiteInformation, feedback);
+      inliner.performInlining(method, code, isProcessedConcurrently, callSiteInformation);
+    }
+
+    // Either marked by IdentifierNameStringMarker or propagated from inlinee.
+    // Then, make it visible to IdentifierMinifier.
+    if (method.getOptimizationInfo().useIdentifierNameString()) {
+      feedback.markUseIdentifierNameString(method);
     }
 
     if (appInfo.hasLiveness()) {
@@ -951,12 +957,8 @@
       // lambda, it does not get collected by merger.
       assert options.enableInlining && inliner != null;
       classInliner.processMethodCode(
-          appInfo.withLiveness(),
-          codeRewriter,
-          method,
-          code,
-          isProcessedConcurrently,
-          methodsToInline -> inliner.performForcedInlining(method, code, methodsToInline, feedback),
+          appInfo.withLiveness(), codeRewriter, method, code, isProcessedConcurrently,
+          methodsToInline -> inliner.performForcedInlining(method, code, methodsToInline),
           Suppliers.memoize(() -> inliner.createDefaultOracle(
               method, code,
               isProcessedConcurrently, callSiteInformation,
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
index f9e43d7..c1cf5b5 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/DefaultInliningOracle.java
@@ -16,7 +16,6 @@
 import com.android.tools.r8.ir.code.InvokeStatic;
 import com.android.tools.r8.ir.code.Value;
 import com.android.tools.r8.ir.conversion.CallSiteInformation;
-import com.android.tools.r8.ir.conversion.OptimizationFeedback;
 import com.android.tools.r8.ir.optimize.Inliner.InlineAction;
 import com.android.tools.r8.ir.optimize.Inliner.InlineeWithReason;
 import com.android.tools.r8.ir.optimize.Inliner.Reason;
@@ -343,14 +342,13 @@
   }
 
   @Override
-  public void ensureMethodProcessed(
-      DexEncodedMethod target, IRCode inlinee, OptimizationFeedback feedback) {
+  public void ensureMethodProcessed(DexEncodedMethod target, IRCode inlinee) {
     if (!target.isProcessed()) {
       if (Log.ENABLED) {
         Log.verbose(getClass(), "Forcing extra inline on " + target.toSourceString());
       }
       inliner.performInlining(
-          target, inlinee, isProcessedConcurrently, callSiteInformation, feedback);
+          target, inlinee, isProcessedConcurrently, callSiteInformation);
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/ForcedInliningOracle.java b/src/main/java/com/android/tools/r8/ir/optimize/ForcedInliningOracle.java
index 0aaf27f..6890dd8 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/ForcedInliningOracle.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/ForcedInliningOracle.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.ir.code.InvokeMethodWithReceiver;
 import com.android.tools.r8.ir.code.InvokePolymorphic;
 import com.android.tools.r8.ir.code.InvokeStatic;
-import com.android.tools.r8.ir.conversion.OptimizationFeedback;
 import com.android.tools.r8.ir.optimize.Inliner.InlineAction;
 import com.android.tools.r8.ir.optimize.Inliner.InlineeWithReason;
 import com.android.tools.r8.ir.optimize.Inliner.Reason;
@@ -65,8 +64,7 @@
   }
 
   @Override
-  public void ensureMethodProcessed(
-      DexEncodedMethod target, IRCode inlinee, OptimizationFeedback feedback) {
+  public void ensureMethodProcessed(DexEncodedMethod target, IRCode inlinee) {
     // Do nothing. If the method is not yet processed, we still should
     // be able to build IR for inlining, though.
   }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
index 1368ea3..63d0242 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
@@ -543,19 +543,17 @@
   public void performForcedInlining(
       DexEncodedMethod method,
       IRCode code,
-      Map<InvokeMethod, InliningInfo> invokesToInline,
-      OptimizationFeedback feedback) {
+      Map<InvokeMethod, InliningInfo> invokesToInline) {
 
     ForcedInliningOracle oracle = new ForcedInliningOracle(method, invokesToInline);
-    performInliningImpl(oracle, oracle, method, code, feedback);
+    performInliningImpl(oracle, oracle, method, code);
   }
 
   public void performInlining(
       DexEncodedMethod method,
       IRCode code,
       Predicate<DexEncodedMethod> isProcessedConcurrently,
-      CallSiteInformation callSiteInformation,
-      OptimizationFeedback feedback) {
+      CallSiteInformation callSiteInformation) {
 
     DefaultInliningOracle oracle =
         createDefaultOracle(
@@ -566,7 +564,7 @@
             options.inliningInstructionLimit,
             options.inliningInstructionAllowance - numberOfInstructions(code));
 
-    performInliningImpl(oracle, oracle, method, code, feedback);
+    performInliningImpl(oracle, oracle, method, code);
   }
 
   public DefaultInliningOracle createDefaultOracle(
@@ -590,11 +588,7 @@
   }
 
   private void performInliningImpl(
-      InliningStrategy strategy,
-      InliningOracle oracle,
-      DexEncodedMethod context,
-      IRCode code,
-      OptimizationFeedback feedback) {
+      InliningStrategy strategy, InliningOracle oracle, DexEncodedMethod context, IRCode code) {
     List<BasicBlock> blocksToRemove = new ArrayList<>();
     ListIterator<BasicBlock> blockIterator = code.listIterator();
     while (blockIterator.hasNext()) {
@@ -631,7 +625,7 @@
 
               // If this code did not go through the full pipeline, apply inlining to make sure
               // that force inline targets get processed.
-              strategy.ensureMethodProcessed(target, inlinee.code, feedback);
+              strategy.ensureMethodProcessed(target, inlinee.code);
 
               // Make sure constructor inlining is legal.
               assert !target.isClassInitializer();
@@ -653,7 +647,7 @@
                 context.accessFlags.unsetBridge();
               }
 
-              context.copyMetadataFromInlinee(target, feedback);
+              context.copyMetadataFromInlinee(target);
               code.copyMetadataFromInlinee(inlinee.code);
             }
           }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/InliningStrategy.java b/src/main/java/com/android/tools/r8/ir/optimize/InliningStrategy.java
index e0ff04b..7dc2b62 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/InliningStrategy.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/InliningStrategy.java
@@ -9,7 +9,6 @@
 import com.android.tools.r8.ir.code.BasicBlock;
 import com.android.tools.r8.ir.code.IRCode;
 import com.android.tools.r8.ir.code.InvokeMethod;
-import com.android.tools.r8.ir.conversion.OptimizationFeedback;
 import com.android.tools.r8.ir.optimize.Inliner.InlineeWithReason;
 import java.util.ListIterator;
 
@@ -28,8 +27,7 @@
   /** Inform the strategy that the inlinee has been inlined. */
   void markInlined(InlineeWithReason inlinee);
 
-  void ensureMethodProcessed(
-      DexEncodedMethod target, IRCode inlinee, OptimizationFeedback feedback);
+  void ensureMethodProcessed(DexEncodedMethod target, IRCode inlinee);
 
   boolean isValidTarget(InvokeMethod invoke, DexEncodedMethod target, IRCode inlinee);
 
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
index 0aff19d..481f6c4 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
@@ -32,7 +32,6 @@
 import com.android.tools.r8.ir.code.InvokeMethod;
 import com.android.tools.r8.ir.code.StaticPut;
 import com.android.tools.r8.ir.code.Value;
-import com.android.tools.r8.ir.conversion.OptimizationFeedback;
 import com.android.tools.r8.origin.Origin;
 import com.android.tools.r8.position.TextPosition;
 import com.android.tools.r8.shaking.Enqueuer.AppInfoWithLiveness;
@@ -84,8 +83,7 @@
     }
   }
 
-  public void decoupleIdentifierNameStringsInMethod(
-      DexEncodedMethod encodedMethod, IRCode code, OptimizationFeedback feedback) {
+  public void decoupleIdentifierNameStringsInMethod(DexEncodedMethod encodedMethod, IRCode code) {
     if (!code.hasConstString) {
       return;
     }
@@ -165,7 +163,7 @@
             InstancePut instancePut = instruction.asInstancePut();
             iterator.replaceCurrentInstruction(new InstancePut(field, instancePut.object(), newIn));
           }
-          feedback.markUseIdentifierNameString(encodedMethod);
+          encodedMethod.getMutableOptimizationInfo().markUseIdentifierNameString();
         } else if (instruction.isInvokeMethod()) {
           InvokeMethod invoke = instruction.asInvokeMethod();
           DexMethod invokedMethod = invoke.getInvokedMethod();
@@ -280,7 +278,7 @@
                     invokedMethod.proto,
                     invoke.outValue(),
                     newIns));
-            feedback.markUseIdentifierNameString(encodedMethod);
+            encodedMethod.getMutableOptimizationInfo().markUseIdentifierNameString();
           }
         }
       }