Remove declaring field from CfInvoke

Change-Id: I135c1475ecc48eb26672f96e5354f4e30374dd98
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfFieldInstruction.java b/src/main/java/com/android/tools/r8/cf/code/CfFieldInstruction.java
index 2ec5bab..60ffc77 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfFieldInstruction.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfFieldInstruction.java
@@ -24,35 +24,25 @@
 public abstract class CfFieldInstruction extends CfInstruction {
 
   private final DexField field;
-  private final DexField declaringField;
 
   private static void specify(StructuralSpecification<CfFieldInstruction, ?> spec) {
-    spec.withInt(CfFieldInstruction::getAsmOpcode)
-        .withItem(CfFieldInstruction::getField)
-        .withItem(CfFieldInstruction::getDeclaringField);
+    spec.withInt(CfFieldInstruction::getAsmOpcode).withItem(CfFieldInstruction::getField);
   }
 
   public CfFieldInstruction(DexField field) {
-    this(field, field);
-  }
-
-  @SuppressWarnings("ReferenceEquality")
-  public CfFieldInstruction(DexField field, DexField declaringField) {
     this.field = field;
-    this.declaringField = declaringField;
-    assert field.type == declaringField.type;
   }
 
-  public static CfFieldInstruction create(int opcode, DexField field, DexField declaringField) {
+  public static CfFieldInstruction create(int opcode, DexField field) {
     switch (opcode) {
       case Opcodes.GETSTATIC:
-        return new CfStaticFieldRead(field, declaringField);
+        return new CfStaticFieldRead(field);
       case Opcodes.PUTSTATIC:
-        return new CfStaticFieldWrite(field, declaringField);
+        return new CfStaticFieldWrite(field);
       case Opcodes.GETFIELD:
-        return new CfInstanceFieldRead(field, declaringField);
+        return new CfInstanceFieldRead(field);
       case Opcodes.PUTFIELD:
-        return new CfInstanceFieldWrite(field, declaringField);
+        return new CfInstanceFieldWrite(field);
       default:
         throw new Unreachable("Unexpected opcode " + opcode);
     }
@@ -62,10 +52,6 @@
     return field;
   }
 
-  public DexField getDeclaringField() {
-    return declaringField;
-  }
-
   @Override
   public int internalAcceptCompareTo(
       CfInstruction other, CompareToVisitor visitor, CfCompareHelper helper) {
@@ -101,9 +87,8 @@
       LensCodeRewriterUtils rewriter,
       MethodVisitor visitor) {
     DexField rewrittenField = graphLens.lookupField(field, codeLens);
-    DexField rewrittenDeclaringField = graphLens.lookupField(declaringField, codeLens);
     String owner = namingLens.lookupInternalName(rewrittenField.holder);
-    String name = namingLens.lookupName(rewrittenDeclaringField).toString();
+    String name = namingLens.lookupName(field).toString();
     String desc = namingLens.lookupDescriptor(rewrittenField.type).toString();
     visitor.visitFieldInsn(getAsmOpcode(), owner, name, desc);
   }
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldRead.java b/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldRead.java
index 69a5090..9ccdbac 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldRead.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldRead.java
@@ -21,11 +21,7 @@
 public class CfInstanceFieldRead extends CfFieldInstruction implements CfOrDexInstanceFieldRead {
 
   public CfInstanceFieldRead(DexField field) {
-    this(field, field);
-  }
-
-  public CfInstanceFieldRead(DexField field, DexField declaringField) {
-    super(field, declaringField);
+    super(field);
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldWrite.java b/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldWrite.java
index 908a999..6f35250 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldWrite.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInstanceFieldWrite.java
@@ -24,11 +24,7 @@
 public class CfInstanceFieldWrite extends CfFieldInstruction {
 
   public CfInstanceFieldWrite(DexField field) {
-    this(field, field);
-  }
-
-  public CfInstanceFieldWrite(DexField field, DexField declaringField) {
-    super(field, declaringField);
+    super(field);
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldRead.java b/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldRead.java
index 78ae24a..f849b62 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldRead.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldRead.java
@@ -23,10 +23,6 @@
     super(field);
   }
 
-  public CfStaticFieldRead(DexField field, DexField declaringField) {
-    super(field, declaringField);
-  }
-
   @Override
   public CfFieldInstruction createWithField(DexField otherField) {
     return new CfStaticFieldRead(otherField);
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldWrite.java b/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldWrite.java
index df00570..40d6e23 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldWrite.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfStaticFieldWrite.java
@@ -23,10 +23,6 @@
     super(field);
   }
 
-  public CfStaticFieldWrite(DexField field, DexField declaringField) {
-    super(field, declaringField);
-  }
-
   @Override
   public CfFieldInstruction createWithField(DexField otherField) {
     return new CfStaticFieldWrite(otherField);
diff --git a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
index 60bcbdc..33f9f26 100644
--- a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
@@ -897,9 +897,7 @@
     public void visitFieldInsn(int opcode, String owner, String name, String desc) {
       DexField field =
           factory.createField(createTypeFromInternalType(owner), factory.createType(desc), name);
-      // TODO(mathiasr): Don't require CfFieldInstruction::declaringField. It is needed for proper
-      // renaming in the backend, but it is not available here in the frontend.
-      addInstruction(CfFieldInstruction.create(opcode, field, field));
+      addInstruction(CfFieldInstruction.create(opcode, field));
     }
 
     @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java b/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java
index 90bf26a..750f203 100644
--- a/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java
+++ b/src/main/java/com/android/tools/r8/ir/code/InstanceGet.java
@@ -217,7 +217,7 @@
 
   @Override
   public void buildCf(CfBuilder builder) {
-    builder.add(new CfInstanceFieldRead(getField(), builder.resolveField(getField())), this);
+    builder.add(new CfInstanceFieldRead(getField()), this);
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/InstancePut.java b/src/main/java/com/android/tools/r8/ir/code/InstancePut.java
index a007ce5..6010ce0 100644
--- a/src/main/java/com/android/tools/r8/ir/code/InstancePut.java
+++ b/src/main/java/com/android/tools/r8/ir/code/InstancePut.java
@@ -266,7 +266,7 @@
 
   @Override
   public void buildCf(CfBuilder builder) {
-    builder.add(new CfInstanceFieldWrite(getField(), builder.resolveField(getField())), this);
+    builder.add(new CfInstanceFieldWrite(getField()), this);
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/StaticGet.java b/src/main/java/com/android/tools/r8/ir/code/StaticGet.java
index aed2b5e..0337117 100644
--- a/src/main/java/com/android/tools/r8/ir/code/StaticGet.java
+++ b/src/main/java/com/android/tools/r8/ir/code/StaticGet.java
@@ -219,7 +219,7 @@
 
   @Override
   public void buildCf(CfBuilder builder) {
-    builder.add(new CfStaticFieldRead(getField(), builder.resolveField(getField())), this);
+    builder.add(new CfStaticFieldRead(getField()), this);
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/ir/code/StaticPut.java b/src/main/java/com/android/tools/r8/ir/code/StaticPut.java
index dc29a40..a4b874a 100644
--- a/src/main/java/com/android/tools/r8/ir/code/StaticPut.java
+++ b/src/main/java/com/android/tools/r8/ir/code/StaticPut.java
@@ -236,7 +236,7 @@
 
   @Override
   public void buildCf(CfBuilder builder) {
-    builder.add(new CfStaticFieldWrite(getField(), builder.resolveField(getField())), this);
+    builder.add(new CfStaticFieldWrite(getField()), this);
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/CfBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/CfBuilder.java
index 9213384..d9794e2 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/CfBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/CfBuilder.java
@@ -27,8 +27,6 @@
 import com.android.tools.r8.graph.CfCode.LocalVariableInfo;
 import com.android.tools.r8.graph.DebugLocalInfo;
 import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexEncodedField;
-import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.ProgramMethod;
 import com.android.tools.r8.graph.bytecodemetadata.BytecodeMetadata;
@@ -261,12 +259,6 @@
     return true;
   }
 
-  public DexField resolveField(DexField field) {
-    DexEncodedField resolvedField =
-        appView.appInfoForDesugaring().resolveField(field).getResolvedField();
-    return resolvedField == null ? field : resolvedField.getReference();
-  }
-
   private void computeInitializers() {
     assert initializers == null;
     assert thisInitializers == null;
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
index 02a8d72..33e914d 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/itf/InterfaceDesugaringSyntheticHelper.java
@@ -646,7 +646,7 @@
                   isWide ? 2 : 1,
                   0,
                   ImmutableList.of(
-                      new CfStaticFieldRead(clinitField.getReference(), clinitField.getReference()),
+                      new CfStaticFieldRead(clinitField.getReference()),
                       isWide
                           ? new CfStackInstruction(Opcode.Pop2)
                           : new CfStackInstruction(Opcode.Pop),
diff --git a/src/main/java/com/android/tools/r8/ir/synthetic/FieldAccessorBuilder.java b/src/main/java/com/android/tools/r8/ir/synthetic/FieldAccessorBuilder.java
index cd0e15e..c77342d 100644
--- a/src/main/java/com/android/tools/r8/ir/synthetic/FieldAccessorBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/synthetic/FieldAccessorBuilder.java
@@ -104,7 +104,7 @@
     // Get or set the field.
     int opcode =
         Opcodes.GETSTATIC + BooleanUtils.intValue(isSetter()) + (isInstanceField.ordinal() << 1);
-    instructions.add(CfFieldInstruction.create(opcode, field, field));
+    instructions.add(CfFieldInstruction.create(opcode, field));
 
     // Return.
     if (isSetter()) {