Account for code lens in cf writer
Change-Id: I4f2a257f2bd0fca8ec2d87d872910361e7e4f54e
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfArithmeticBinop.java b/src/main/java/com/android/tools/r8/cf/code/CfArithmeticBinop.java
index 460a7d7..b407f34 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfArithmeticBinop.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfArithmeticBinop.java
@@ -165,6 +165,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfArrayLength.java b/src/main/java/com/android/tools/r8/cf/code/CfArrayLength.java
index 0c25941..068d034 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfArrayLength.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfArrayLength.java
@@ -34,6 +34,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfArrayLoad.java b/src/main/java/com/android/tools/r8/cf/code/CfArrayLoad.java
index cd21707..a97e1ea 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfArrayLoad.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfArrayLoad.java
@@ -67,6 +67,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfArrayStore.java b/src/main/java/com/android/tools/r8/cf/code/CfArrayStore.java
index aee2e6f..0cad424 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfArrayStore.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfArrayStore.java
@@ -75,6 +75,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfCheckCast.java b/src/main/java/com/android/tools/r8/cf/code/CfCheckCast.java
index f450da4..091aa57 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfCheckCast.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfCheckCast.java
@@ -90,11 +90,12 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
MethodVisitor visitor) {
- DexType rewrittenType = graphLens.lookupType(type);
+ DexType rewrittenType = graphLens.lookupType(type, codeLens);
visitor.visitTypeInsn(Opcodes.CHECKCAST, namingLens.lookupInternalName(rewrittenType));
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfCmp.java b/src/main/java/com/android/tools/r8/cf/code/CfCmp.java
index 5b35a3e..6ca820e 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfCmp.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfCmp.java
@@ -110,6 +110,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstClass.java b/src/main/java/com/android/tools/r8/cf/code/CfConstClass.java
index bc226cb..151be2a 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstClass.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstClass.java
@@ -103,11 +103,12 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
MethodVisitor visitor) {
- visitor.visitLdcInsn(Type.getObjectType(getInternalName(graphLens, namingLens)));
+ visitor.visitLdcInsn(Type.getObjectType(getInternalName(graphLens, codeLens, namingLens)));
}
@Override
@@ -126,8 +127,8 @@
return true;
}
- private String getInternalName(GraphLens graphLens, NamingLens namingLens) {
- DexType rewrittenType = graphLens.lookupType(type);
+ private String getInternalName(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
+ DexType rewrittenType = graphLens.lookupType(type, codeLens);
switch (rewrittenType.toShorty()) {
case '[':
case 'L':
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstDynamic.java b/src/main/java/com/android/tools/r8/cf/code/CfConstDynamic.java
index 9f3f073..d47a830 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstDynamic.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstDynamic.java
@@ -155,6 +155,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
@@ -172,15 +173,15 @@
ConstantDynamic constantDynamic =
new ConstantDynamic(
reference.getName().toString(),
- getConstantTypeDescriptor(graphLens, namingLens, dexItemFactory),
+ getConstantTypeDescriptor(graphLens, codeLens, namingLens, dexItemFactory),
rewrittenHandle.toAsmHandle(namingLens),
bsmArgs);
visitor.visitLdcInsn(constantDynamic);
}
private String getConstantTypeDescriptor(
- GraphLens graphLens, NamingLens namingLens, DexItemFactory factory) {
- DexType rewrittenType = graphLens.lookupType(reference.getType());
+ GraphLens graphLens, GraphLens codeLens, NamingLens namingLens, DexItemFactory factory) {
+ DexType rewrittenType = graphLens.lookupType(reference.getType(), codeLens);
DexType renamedType = namingLens.lookupType(rewrittenType, factory);
return renamedType.toDescriptorString();
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstMethodHandle.java b/src/main/java/com/android/tools/r8/cf/code/CfConstMethodHandle.java
index e02b1fe..9c59d83 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstMethodHandle.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstMethodHandle.java
@@ -63,6 +63,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstMethodType.java b/src/main/java/com/android/tools/r8/cf/code/CfConstMethodType.java
index 7e8d519..b9f5d88 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstMethodType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstMethodType.java
@@ -63,6 +63,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstNull.java b/src/main/java/com/android/tools/r8/cf/code/CfConstNull.java
index 75eb939..5e6485a 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstNull.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstNull.java
@@ -34,6 +34,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java b/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java
index 21dbd68..991ed9d 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstNumber.java
@@ -93,6 +93,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfConstString.java b/src/main/java/com/android/tools/r8/cf/code/CfConstString.java
index 9756641..d60203a 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfConstString.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfConstString.java
@@ -73,6 +73,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfDexItemBasedConstString.java b/src/main/java/com/android/tools/r8/cf/code/CfDexItemBasedConstString.java
index 9bf20e3..b350e1f 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfDexItemBasedConstString.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfDexItemBasedConstString.java
@@ -80,6 +80,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
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 9045c59..9d91db7 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
@@ -102,12 +102,13 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
MethodVisitor visitor) {
- DexField rewrittenField = graphLens.lookupField(field);
- DexField rewrittenDeclaringField = graphLens.lookupField(declaringField);
+ 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 desc = namingLens.lookupDescriptor(rewrittenField.type).toString();
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfFrame.java b/src/main/java/com/android/tools/r8/cf/code/CfFrame.java
index 6813ed1..c8308b4 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfFrame.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfFrame.java
@@ -182,14 +182,15 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
MethodVisitor visitor) {
int stackCount = computeStackCount();
- Object[] stackTypes = computeStackTypes(stackCount, graphLens, namingLens);
+ Object[] stackTypes = computeStackTypes(stackCount, graphLens, codeLens, namingLens);
int localsCount = computeLocalsCount();
- Object[] localsTypes = computeLocalsTypes(localsCount, graphLens, namingLens);
+ Object[] localsTypes = computeLocalsTypes(localsCount, graphLens, codeLens, namingLens);
visitor.visitFrame(F_NEW, localsCount, localsTypes, stackCount, stackTypes);
}
@@ -210,7 +211,8 @@
return size;
}
- private Object[] computeStackTypes(int stackCount, GraphLens graphLens, NamingLens namingLens) {
+ private Object[] computeStackTypes(
+ int stackCount, GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
assert stackCount == stack.size();
if (stackCount == 0) {
return null;
@@ -218,7 +220,7 @@
Object[] stackTypes = new Object[stackCount];
int index = 0;
for (PreciseFrameType frameType : stack) {
- stackTypes[index++] = frameType.getTypeOpcode(graphLens, namingLens);
+ stackTypes[index++] = frameType.getTypeOpcode(graphLens, codeLens, namingLens);
}
return stackTypes;
}
@@ -240,7 +242,8 @@
return localsCount;
}
- private Object[] computeLocalsTypes(int localsCount, GraphLens graphLens, NamingLens namingLens) {
+ private Object[] computeLocalsTypes(
+ int localsCount, GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
if (localsCount == 0) {
return null;
}
@@ -250,7 +253,7 @@
for (int i = 0; i <= maxRegister; i++) {
FrameType type = locals.get(i);
localsTypes[localIndex++] =
- type == null ? Opcodes.TOP : type.getTypeOpcode(graphLens, namingLens);
+ type == null ? Opcodes.TOP : type.getTypeOpcode(graphLens, codeLens, namingLens);
if (type != null && type.isWide()) {
i++;
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfGoto.java b/src/main/java/com/android/tools/r8/cf/code/CfGoto.java
index 48fe920..29dd22a 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfGoto.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfGoto.java
@@ -85,6 +85,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfIf.java b/src/main/java/com/android/tools/r8/cf/code/CfIf.java
index 25dfd77..0ac4689 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfIf.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfIf.java
@@ -92,6 +92,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfIfCmp.java b/src/main/java/com/android/tools/r8/cf/code/CfIfCmp.java
index ee9ece8..24fc552 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfIfCmp.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfIfCmp.java
@@ -92,6 +92,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfIinc.java b/src/main/java/com/android/tools/r8/cf/code/CfIinc.java
index 063f778..7a4ba0a 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfIinc.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfIinc.java
@@ -65,6 +65,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInitClass.java b/src/main/java/com/android/tools/r8/cf/code/CfInitClass.java
index 440f799f..21608ae 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInitClass.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInitClass.java
@@ -74,13 +74,14 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
MethodVisitor visitor) {
// We intentionally apply the graph lens first, and then the init class lens, using the fact
// that the init class lens maps classes in the final program to fields in the final program.
- DexType rewrittenClass = graphLens.lookupType(clazz);
+ DexType rewrittenClass = graphLens.lookupType(clazz, codeLens);
DexField clinitField = initClassLens.getInitClassField(rewrittenClass);
String owner = namingLens.lookupInternalName(clinitField.holder);
String name = namingLens.lookupName(clinitField).toString();
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInstanceOf.java b/src/main/java/com/android/tools/r8/cf/code/CfInstanceOf.java
index 9a0308e..ec34784 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInstanceOf.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInstanceOf.java
@@ -89,11 +89,12 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
MethodVisitor visitor) {
- DexType rewrittenType = graphLens.lookupType(getType());
+ DexType rewrittenType = graphLens.lookupType(getType(), codeLens);
visitor.visitTypeInsn(Opcodes.INSTANCEOF, namingLens.lookupInternalName(rewrittenType));
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java b/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java
index b13fbe8..ff95325 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInstruction.java
@@ -41,6 +41,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInvoke.java b/src/main/java/com/android/tools/r8/cf/code/CfInvoke.java
index 8a87dd0..bcbe536 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInvoke.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInvoke.java
@@ -106,6 +106,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
@@ -124,7 +125,7 @@
itf);
} else {
MethodLookupResult lookup =
- graphLens.lookupMethod(method, context.getReference(), invokeType);
+ graphLens.lookupMethod(method, context.getReference(), invokeType, codeLens);
InvokeType rewrittenType = lookup.getType();
DexMethod rewrittenMethod = lookup.getReference();
String owner = namingLens.lookupInternalName(rewrittenMethod.holder);
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfInvokeDynamic.java b/src/main/java/com/android/tools/r8/cf/code/CfInvokeDynamic.java
index c174214..79ba7f9 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfInvokeDynamic.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfInvokeDynamic.java
@@ -79,6 +79,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfJsrRet.java b/src/main/java/com/android/tools/r8/cf/code/CfJsrRet.java
index 6abd7ae..7ab3052 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfJsrRet.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfJsrRet.java
@@ -60,6 +60,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfLabel.java b/src/main/java/com/android/tools/r8/cf/code/CfLabel.java
index 0cb0665..29701e6 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfLabel.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfLabel.java
@@ -73,6 +73,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfLoad.java b/src/main/java/com/android/tools/r8/cf/code/CfLoad.java
index 0479271..a0b7fdc 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfLoad.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfLoad.java
@@ -89,6 +89,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfLogicalBinop.java b/src/main/java/com/android/tools/r8/cf/code/CfLogicalBinop.java
index a173410..14f30b1 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfLogicalBinop.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfLogicalBinop.java
@@ -139,6 +139,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfMonitor.java b/src/main/java/com/android/tools/r8/cf/code/CfMonitor.java
index edfb91a..d7ef8ee 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfMonitor.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfMonitor.java
@@ -61,6 +61,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfMultiANewArray.java b/src/main/java/com/android/tools/r8/cf/code/CfMultiANewArray.java
index 344e65b..85f09af 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfMultiANewArray.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfMultiANewArray.java
@@ -91,11 +91,12 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
MethodVisitor visitor) {
- DexType rewrittenType = graphLens.lookupType(getType());
+ DexType rewrittenType = graphLens.lookupType(getType(), codeLens);
visitor.visitMultiANewArrayInsn(namingLens.lookupInternalName(rewrittenType), dimensions);
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNeg.java b/src/main/java/com/android/tools/r8/cf/code/CfNeg.java
index d861c19..61216c1 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNeg.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNeg.java
@@ -62,6 +62,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNew.java b/src/main/java/com/android/tools/r8/cf/code/CfNew.java
index e6a51f8..9e0af9c 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNew.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNew.java
@@ -107,11 +107,12 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
MethodVisitor visitor) {
- DexType rewrittenType = graphLens.lookupType(getType());
+ DexType rewrittenType = graphLens.lookupType(getType(), codeLens);
visitor.visitTypeInsn(Opcodes.NEW, namingLens.lookupInternalName(rewrittenType));
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNewArray.java b/src/main/java/com/android/tools/r8/cf/code/CfNewArray.java
index 5c2a657..943252d 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNewArray.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNewArray.java
@@ -101,7 +101,10 @@
}
private String getElementInternalName(
- DexItemFactory dexItemFactory, GraphLens graphLens, NamingLens namingLens) {
+ DexItemFactory dexItemFactory,
+ GraphLens graphLens,
+ GraphLens codeLens,
+ NamingLens namingLens) {
assert !type.isPrimitiveArrayType();
StringBuilder renamedElementDescriptor = new StringBuilder();
// Intentionally starting from 1 to get the element descriptor.
@@ -110,7 +113,7 @@
renamedElementDescriptor.append("[");
}
DexType baseType = getType().toBaseType(dexItemFactory);
- DexType rewrittenBaseType = graphLens.lookupType(baseType);
+ DexType rewrittenBaseType = graphLens.lookupType(baseType, codeLens);
renamedElementDescriptor.append(
namingLens.lookupDescriptor(rewrittenBaseType).toSourceString());
return DescriptorUtils.descriptorToInternalName(renamedElementDescriptor.toString());
@@ -122,6 +125,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
@@ -130,7 +134,8 @@
visitor.visitIntInsn(Opcodes.NEWARRAY, getPrimitiveTypeCode());
} else {
visitor.visitTypeInsn(
- Opcodes.ANEWARRAY, getElementInternalName(dexItemFactory, graphLens, namingLens));
+ Opcodes.ANEWARRAY,
+ getElementInternalName(dexItemFactory, graphLens, codeLens, namingLens));
}
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNewUnboxedEnum.java b/src/main/java/com/android/tools/r8/cf/code/CfNewUnboxedEnum.java
index 5864372..11efcd1 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNewUnboxedEnum.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNewUnboxedEnum.java
@@ -83,6 +83,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNop.java b/src/main/java/com/android/tools/r8/cf/code/CfNop.java
index 139c2a7..fd5d76c 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNop.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNop.java
@@ -49,6 +49,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfNumberConversion.java b/src/main/java/com/android/tools/r8/cf/code/CfNumberConversion.java
index 856cc36..32a1d4f 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfNumberConversion.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfNumberConversion.java
@@ -72,6 +72,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfPosition.java b/src/main/java/com/android/tools/r8/cf/code/CfPosition.java
index 6a442c3..9e4bae3 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfPosition.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfPosition.java
@@ -63,6 +63,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfRecordFieldValues.java b/src/main/java/com/android/tools/r8/cf/code/CfRecordFieldValues.java
index 98c1e78..c34d876 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfRecordFieldValues.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfRecordFieldValues.java
@@ -48,6 +48,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfReturn.java b/src/main/java/com/android/tools/r8/cf/code/CfReturn.java
index bddd05e..725acb1 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfReturn.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfReturn.java
@@ -94,6 +94,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfReturnVoid.java b/src/main/java/com/android/tools/r8/cf/code/CfReturnVoid.java
index 0a96d17..0197fc2 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfReturnVoid.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfReturnVoid.java
@@ -59,6 +59,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfStackInstruction.java b/src/main/java/com/android/tools/r8/cf/code/CfStackInstruction.java
index e3b70f6..7679a02 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfStackInstruction.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfStackInstruction.java
@@ -107,6 +107,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfStore.java b/src/main/java/com/android/tools/r8/cf/code/CfStore.java
index 279014d..f59bfb6 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfStore.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfStore.java
@@ -87,6 +87,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfSwitch.java b/src/main/java/com/android/tools/r8/cf/code/CfSwitch.java
index f54eaa1..f190ae4 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfSwitch.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfSwitch.java
@@ -125,6 +125,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/CfThrow.java b/src/main/java/com/android/tools/r8/cf/code/CfThrow.java
index 4bdf343..f59f162 100644
--- a/src/main/java/com/android/tools/r8/cf/code/CfThrow.java
+++ b/src/main/java/com/android/tools/r8/cf/code/CfThrow.java
@@ -70,6 +70,7 @@
ProgramMethod context,
DexItemFactory dexItemFactory,
GraphLens graphLens,
+ GraphLens codeLens,
InitClassLens initClassLens,
NamingLens namingLens,
LensCodeRewriterUtils rewriter,
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/BooleanFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/BooleanFrameType.java
index b0ec955..50e26e6 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/BooleanFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/BooleanFrameType.java
@@ -27,7 +27,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
throw new Unreachable("Unexpected value type: " + this);
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/ByteFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/ByteFrameType.java
index e6aa4da..5fcbec8 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/ByteFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/ByteFrameType.java
@@ -27,7 +27,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
throw new Unreachable("Unexpected value type: " + this);
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/CharFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/CharFrameType.java
index 8dc437d..81c1084 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/CharFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/CharFrameType.java
@@ -27,7 +27,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
throw new Unreachable("Unexpected value type: " + this);
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/DoubleFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/DoubleFrameType.java
index 7ad8dc2..2c14eb0 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/DoubleFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/DoubleFrameType.java
@@ -62,7 +62,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
return Opcodes.DOUBLE;
}
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/DoubleHighFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/DoubleHighFrameType.java
index 655fa52..056eaf3 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/DoubleHighFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/DoubleHighFrameType.java
@@ -52,7 +52,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
throw new Unreachable();
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/FloatFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/FloatFrameType.java
index 9cc991a..8597b0e 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/FloatFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/FloatFrameType.java
@@ -27,7 +27,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
return Opcodes.FLOAT;
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/FrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/FrameType.java
index 9db9a68..ba7cf84 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/FrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/FrameType.java
@@ -176,7 +176,7 @@
DexType getObjectType(DexItemFactory dexItemFactory, DexType context);
- Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens);
+ Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens);
CfLabel getUninitializedLabel();
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/InitializedNonNullReferenceFrameTypeWithInterfaces.java b/src/main/java/com/android/tools/r8/cf/code/frame/InitializedNonNullReferenceFrameTypeWithInterfaces.java
index c92d003..16dceeb 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/InitializedNonNullReferenceFrameTypeWithInterfaces.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/InitializedNonNullReferenceFrameTypeWithInterfaces.java
@@ -55,7 +55,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
throw new Unreachable(
"Unexpected InitializedNonNullReferenceFrameTypeWithInterfaces in writer");
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/InitializedNonNullReferenceFrameTypeWithoutInterfaces.java b/src/main/java/com/android/tools/r8/cf/code/frame/InitializedNonNullReferenceFrameTypeWithoutInterfaces.java
index a7475f8..7d09140 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/InitializedNonNullReferenceFrameTypeWithoutInterfaces.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/InitializedNonNullReferenceFrameTypeWithoutInterfaces.java
@@ -54,8 +54,8 @@
@Override
@SuppressWarnings("ReferenceEquality")
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
- DexType rewrittenType = graphLens.lookupType(type);
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
+ DexType rewrittenType = graphLens.lookupType(type, codeLens);
assert rewrittenType != DexItemFactory.nullValueType;
switch (rewrittenType.toShorty()) {
case 'L':
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/IntFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/IntFrameType.java
index 0f802b4..ad66a51 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/IntFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/IntFrameType.java
@@ -27,7 +27,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
return Opcodes.INTEGER;
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/LongFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/LongFrameType.java
index a73ab16..cda7263 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/LongFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/LongFrameType.java
@@ -62,7 +62,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
return Opcodes.LONG;
}
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/LongHighFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/LongHighFrameType.java
index f2c5c9a..291cae7 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/LongHighFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/LongHighFrameType.java
@@ -52,7 +52,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
throw new Unreachable();
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/NullFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/NullFrameType.java
index be3fa37..007bfd7 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/NullFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/NullFrameType.java
@@ -78,7 +78,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
return Opcodes.NULL;
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/OneWord.java b/src/main/java/com/android/tools/r8/cf/code/frame/OneWord.java
index 3153ef8..47e37f5 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/OneWord.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/OneWord.java
@@ -33,7 +33,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
return Opcodes.TOP;
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/ShortFrameType.java b/src/main/java/com/android/tools/r8/cf/code/frame/ShortFrameType.java
index 82f0279..46d0316 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/ShortFrameType.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/ShortFrameType.java
@@ -27,7 +27,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
throw new Unreachable("Unexpected value type: " + this);
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/TwoWord.java b/src/main/java/com/android/tools/r8/cf/code/frame/TwoWord.java
index 95cab6f..2b5a049 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/TwoWord.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/TwoWord.java
@@ -41,7 +41,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
throw new Unreachable("Should only be used for verification");
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/UninitializedNew.java b/src/main/java/com/android/tools/r8/cf/code/frame/UninitializedNew.java
index eadec8a..9159f99 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/UninitializedNew.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/UninitializedNew.java
@@ -30,7 +30,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
return label.getLabel();
}
diff --git a/src/main/java/com/android/tools/r8/cf/code/frame/UninitializedThis.java b/src/main/java/com/android/tools/r8/cf/code/frame/UninitializedThis.java
index a1654ab..ff15b98 100644
--- a/src/main/java/com/android/tools/r8/cf/code/frame/UninitializedThis.java
+++ b/src/main/java/com/android/tools/r8/cf/code/frame/UninitializedThis.java
@@ -24,7 +24,7 @@
}
@Override
- public Object getTypeOpcode(GraphLens graphLens, NamingLens namingLens) {
+ public Object getTypeOpcode(GraphLens graphLens, GraphLens codeLens, NamingLens namingLens) {
return Opcodes.UNINITIALIZED_THIS;
}
diff --git a/src/main/java/com/android/tools/r8/graph/CfCode.java b/src/main/java/com/android/tools/r8/graph/CfCode.java
index fe5b2c4..e730dee 100644
--- a/src/main/java/com/android/tools/r8/graph/CfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/CfCode.java
@@ -424,6 +424,7 @@
LensCodeRewriterUtils rewriter,
MethodVisitor visitor) {
GraphLens graphLens = appView.graphLens();
+ GraphLens codeLens = getCodeLens(appView);
assert getOrComputeStackMapStatus(method, appView).isValidOrNotPresent()
: "Could not validate stack map frames";
DexItemFactory dexItemFactory = appView.dexItemFactory();
@@ -433,7 +434,15 @@
if (shouldAddParameterNames(method.getDefinition(), appView)) {
parameterLabel = new CfLabel();
parameterLabel.write(
- appView, method, dexItemFactory, graphLens, initClassLens, namingLens, rewriter, visitor);
+ appView,
+ method,
+ dexItemFactory,
+ graphLens,
+ codeLens,
+ initClassLens,
+ namingLens,
+ rewriter,
+ visitor);
}
boolean discardFrames =
classFileVersion.isLessThan(CfVersion.V1_6)
@@ -453,7 +462,15 @@
continue;
}
instruction.write(
- appView, method, dexItemFactory, graphLens, initClassLens, namingLens, rewriter, visitor);
+ appView,
+ method,
+ dexItemFactory,
+ graphLens,
+ codeLens,
+ initClassLens,
+ namingLens,
+ rewriter,
+ visitor);
}
visitor.visitEnd();
visitor.visitMaxs(maxStack, maxLocals);
@@ -462,7 +479,7 @@
Label end = tryCatch.end.getLabel();
for (int i = 0; i < tryCatch.guards.size(); i++) {
DexType guard = tryCatch.guards.get(i);
- DexType rewrittenGuard = graphLens.lookupType(guard);
+ DexType rewrittenGuard = graphLens.lookupType(guard, codeLens);
Label target = tryCatch.targets.get(i).getLabel();
visitor.visitTryCatchBlock(
start,
@@ -480,6 +497,7 @@
writeLocalVariableEntry(
visitor,
graphLens,
+ codeLens,
namingLens,
entry.getValue(),
parameterLabel,
@@ -489,7 +507,14 @@
} else {
for (LocalVariableInfo local : localVariables) {
writeLocalVariableEntry(
- visitor, graphLens, namingLens, local.local, local.start, local.end, local.index);
+ visitor,
+ graphLens,
+ codeLens,
+ namingLens,
+ local.local,
+ local.start,
+ local.end,
+ local.index);
}
}
}
@@ -497,12 +522,13 @@
private void writeLocalVariableEntry(
MethodVisitor visitor,
GraphLens graphLens,
+ GraphLens codeLens,
NamingLens namingLens,
DebugLocalInfo info,
CfLabel start,
CfLabel end,
int index) {
- DexType rewrittenType = graphLens.lookupType(info.type);
+ DexType rewrittenType = graphLens.lookupType(info.type, codeLens);
visitor.visitLocalVariable(
info.name.toString(),
namingLens.lookupDescriptor(rewrittenType).toString(),