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()) {