Account for code lens in dex writer
Change-Id: I89963ce0c9cbe54761a4c6d71d816674cb98da9c
diff --git a/src/main/java/com/android/tools/r8/dex/DebugBytecodeWriter.java b/src/main/java/com/android/tools/r8/dex/DebugBytecodeWriter.java
index e314417..0b4b15c 100644
--- a/src/main/java/com/android/tools/r8/dex/DebugBytecodeWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/DebugBytecodeWriter.java
@@ -16,19 +16,24 @@
private final ObjectToOffsetMapping mapping;
private final GraphLens graphLens;
+ private final GraphLens codeLens;
private final DexDebugInfoForWriting info;
private ByteBuffer buffer;
public DebugBytecodeWriter(
- DexDebugInfoForWriting info, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DexDebugInfoForWriting info,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
this.info = info;
this.mapping = mapping;
this.graphLens = graphLens;
+ this.codeLens = codeLens;
this.buffer = ByteBuffer.allocate(info.estimatedWriteSize());
}
public byte[] generate() {
- info.write(this, mapping, graphLens);
+ info.write(this, mapping, graphLens, codeLens);
return Arrays.copyOf(buffer.array(), buffer.position());
}
diff --git a/src/main/java/com/android/tools/r8/dex/FileWriter.java b/src/main/java/com/android/tools/r8/dex/FileWriter.java
index 0744b77..3aa1c44 100644
--- a/src/main/java/com/android/tools/r8/dex/FileWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/FileWriter.java
@@ -235,10 +235,10 @@
layout.setDebugInfosOffset(dest.align(1));
Set<DexDebugInfoForWriting> seen = new HashSet<>(mixedSectionOffsets.getDebugInfos().size());
for (ProgramMethod method : codes) {
- DexDebugInfoForWriting info =
- method.getDefinition().getCode().asDexWritableCode().getDebugInfoForWriting();
+ DexWritableCode code = method.getDefinition().getCode().asDexWritableCode();
+ DexDebugInfoForWriting info = code.getDebugInfoForWriting();
if (info != null && seen.add(info)) {
- writeDebugItem(info);
+ writeDebugItem(code, info);
}
}
}
@@ -485,6 +485,7 @@
}
private int sizeOfCodeItem(DexWritableCode code) {
+ GraphLens codeLens = code.getCodeLens(appView);
int result = 16;
int insnSize = code.codeSizeInBytes();
result += insnSize * 2;
@@ -497,7 +498,7 @@
result += LebUtils
.sizeAsSleb128(hasCatchAll ? -handler.pairs.length : handler.pairs.length);
for (TypeAddrPair pair : handler.pairs) {
- result += sizeAsUleb128(mapping.getOffsetFor(pair.getType(graphLens)));
+ result += sizeAsUleb128(mapping.getOffsetFor(pair.getType(graphLens, codeLens)));
result += sizeAsUleb128(pair.addr);
}
if (hasCatchAll) {
@@ -562,12 +563,14 @@
mixedSectionOffsets.getOffsetFor(mixedSectionOffsets.getStaticFieldValuesForClass(clazz)));
}
- private void writeDebugItem(DexDebugInfoForWriting debugInfo) {
+ private void writeDebugItem(DexWritableCode code, DexDebugInfoForWriting debugInfo) {
+ GraphLens codeLens = code.getCodeLens(appView);
mixedSectionOffsets.setOffsetFor(debugInfo, dest.position());
- dest.putBytes(new DebugBytecodeWriter(debugInfo, mapping, graphLens).generate());
+ dest.putBytes(new DebugBytecodeWriter(debugInfo, mapping, graphLens, codeLens).generate());
}
private int writeCodeItem(ProgramMethod method, DexWritableCode code) {
+ GraphLens codeLens = code.getCodeLens(appView);
int codeOffset = dest.align(4);
mixedSectionOffsets.setOffsetFor(method.getDefinition(), codeOffset);
// Fixed size header information.
@@ -600,9 +603,9 @@
boolean hasCatchAll = handler.catchAllAddr != TryHandler.NO_HANDLER;
dest.putSleb128(hasCatchAll ? -handler.pairs.length : handler.pairs.length);
for (TypeAddrPair pair : handler.pairs) {
- dest.putUleb128(mapping.getOffsetFor(pair.getType(graphLens)));
+ dest.putUleb128(mapping.getOffsetFor(pair.getType(graphLens, codeLens)));
dest.putUleb128(pair.addr);
- desugaredLibraryCodeToKeep.recordClass(pair.getType(graphLens));
+ desugaredLibraryCodeToKeep.recordClass(pair.getType(graphLens, codeLens));
}
if (hasCatchAll) {
dest.putUleb128(handler.catchAllAddr);
diff --git a/src/main/java/com/android/tools/r8/dex/StartupMixedSectionLayoutStrategy.java b/src/main/java/com/android/tools/r8/dex/StartupMixedSectionLayoutStrategy.java
index b98df1c..1a2f918 100644
--- a/src/main/java/com/android/tools/r8/dex/StartupMixedSectionLayoutStrategy.java
+++ b/src/main/java/com/android/tools/r8/dex/StartupMixedSectionLayoutStrategy.java
@@ -22,6 +22,7 @@
import com.android.tools.r8.graph.DexWritableCode;
import com.android.tools.r8.graph.ParameterAnnotationsList;
import com.android.tools.r8.graph.ProgramMethod;
+import com.android.tools.r8.graph.lens.GraphLens;
import com.android.tools.r8.ir.conversion.LensCodeRewriterUtils;
import com.android.tools.r8.profile.startup.profile.StartupProfile;
import com.android.tools.r8.profile.startup.profile.StartupProfileClassRule;
@@ -124,7 +125,8 @@
methodReference.collectIndexedItems(appView, indexedItemCollection);
if (indexedItemCollection.addCode(method)) {
DexWritableCode code = method.getDefinition().getCode().asDexWritableCode();
- code.collectIndexedItems(appView, indexedItemCollection, method, rewriter);
+ GraphLens codeLens = code.getCodeLens(appView);
+ code.collectIndexedItems(appView, codeLens, indexedItemCollection, method, rewriter);
}
}
}
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java b/src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java
index 224f94a..c0012cb 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexCheckCast.java
@@ -62,10 +62,11 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = appView.graphLens().lookupType(getType());
+ DexType rewritten = appView.graphLens().lookupType(getType(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
@@ -77,7 +78,7 @@
GraphLens codeLens,
ObjectToOffsetMapping mapping,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = graphLens.lookupType(getType());
+ DexType rewritten = graphLens.lookupType(getType(), codeLens);
writeFirst(AA, dest);
write16BitReference(rewritten, dest, mapping);
}
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexConstClass.java b/src/main/java/com/android/tools/r8/dex/code/DexConstClass.java
index b4a593e..0013063 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexConstClass.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexConstClass.java
@@ -62,10 +62,11 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = appView.graphLens().lookupType(getType());
+ DexType rewritten = appView.graphLens().lookupType(getType(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
@@ -77,7 +78,7 @@
GraphLens codeLens,
ObjectToOffsetMapping mapping,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = graphLens.lookupType(getType());
+ DexType rewritten = graphLens.lookupType(getType(), codeLens);
writeFirst(AA, dest);
write16BitReference(rewritten, dest, mapping);
}
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java b/src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java
index 7aa77db..f9ee91b 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexConstMethodHandle.java
@@ -95,6 +95,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java b/src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java
index 485b3da..bef8628 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexConstMethodType.java
@@ -91,6 +91,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexConstString.java b/src/main/java/com/android/tools/r8/dex/code/DexConstString.java
index b95b247..7ed956d 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexConstString.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexConstString.java
@@ -43,6 +43,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
index 72fac38..d3815e8 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArray.java
@@ -46,10 +46,11 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = appView.graphLens().lookupType(getType());
+ DexType rewritten = appView.graphLens().lookupType(getType(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
@@ -75,7 +76,7 @@
GraphLens codeLens,
ObjectToOffsetMapping mapping,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = graphLens.lookupType(getType());
+ DexType rewritten = graphLens.lookupType(getType(), codeLens);
writeFirst(A, G, dest);
write16BitReference(rewritten, dest, mapping);
write16BitValue(combineBytes(makeByte(F, E), makeByte(D, C)), dest);
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java
index 436ec57..d26b547 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFilledNewArrayRange.java
@@ -46,10 +46,11 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = appView.graphLens().lookupType(getType());
+ DexType rewritten = appView.graphLens().lookupType(getType(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
@@ -75,7 +76,7 @@
GraphLens codeLens,
ObjectToOffsetMapping mapping,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = graphLens.lookupType(getType());
+ DexType rewritten = graphLens.lookupType(getType(), codeLens);
writeFirst(AA, dest);
write16BitReference(rewritten, dest, mapping);
write16BitValue(CCCC, dest);
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java
index eaee763..1f1567c 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat10t.java
@@ -69,6 +69,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java
index 3071bfa..bdfca29 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat10x.java
@@ -46,6 +46,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java
index 5796308..82c165e 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat11n.java
@@ -79,6 +79,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java
index ef59bfb..cedd4a9 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat11x.java
@@ -69,6 +69,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java
index 05a6b22..12d53d2 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat12x.java
@@ -77,6 +77,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java
index d398e0d..d4d90c5 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat20t.java
@@ -69,6 +69,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java
index 5dfec30..144d491 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat21h.java
@@ -68,6 +68,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java
index 8ccce8c..254efee 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat21s.java
@@ -80,6 +80,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java
index 55eaac6..696b5bc 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat21t.java
@@ -98,6 +98,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java
index d3bb2df..6334bc5 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat22b.java
@@ -85,6 +85,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java
index fc22957..f01a75b4 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat22s.java
@@ -85,6 +85,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java
index 00b22c1..bec44e3 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat22t.java
@@ -102,6 +102,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java
index 0dedb95..1077ce0 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat22x.java
@@ -79,6 +79,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java
index bcadc94..fab119f 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat23x.java
@@ -83,6 +83,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java
index 18c9137..a65da4f 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat30t.java
@@ -68,6 +68,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java
index 695779e..9895905 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat31c.java
@@ -77,6 +77,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java
index d2eed2d..d0a2932 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat31i.java
@@ -73,6 +73,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java
index 2e7de21..28b16eb 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat31t.java
@@ -88,6 +88,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java
index dd6f6bf..fd8ae9d 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat32x.java
@@ -81,6 +81,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java
index a8935b6..6506871 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat45cc.java
@@ -102,13 +102,14 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
MethodLookupResult lookup =
appView
.graphLens()
- .lookupMethod(getMethod(), context.getReference(), InvokeType.POLYMORPHIC);
+ .lookupMethod(getMethod(), context.getReference(), InvokeType.POLYMORPHIC, codeLens);
assert lookup.getType() == InvokeType.POLYMORPHIC;
lookup.getReference().collectIndexedItems(appView, indexedItems);
@@ -130,7 +131,7 @@
assert rewriter.dexItemFactory().polymorphicMethods.isPolymorphicInvoke(getMethod());
assert getMethod()
== graphLens
- .lookupMethod(getMethod(), context.getReference(), InvokeType.POLYMORPHIC)
+ .lookupMethod(getMethod(), context.getReference(), InvokeType.POLYMORPHIC, codeLens)
.getReference();
DexProto rewrittenProto = rewriter.rewriteProto(getProto());
writeFirst(A, G, dest);
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java
index fcf77ed..0418db4 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat4rcc.java
@@ -66,7 +66,7 @@
assert rewriter.dexItemFactory().polymorphicMethods.isPolymorphicInvoke(getMethod());
assert getMethod()
== graphLens
- .lookupMethod(getMethod(), context.getReference(), InvokeType.POLYMORPHIC)
+ .lookupMethod(getMethod(), context.getReference(), InvokeType.POLYMORPHIC, codeLens)
.getReference();
DexProto rewrittenProto = rewriter.rewriteProto(getProto());
writeFirst(AA, dest);
@@ -116,13 +116,14 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
MethodLookupResult lookup =
appView
.graphLens()
- .lookupMethod(getMethod(), context.getReference(), InvokeType.POLYMORPHIC);
+ .lookupMethod(getMethod(), context.getReference(), InvokeType.POLYMORPHIC, codeLens);
assert lookup.getType() == InvokeType.POLYMORPHIC;
lookup.getReference().collectIndexedItems(appView, indexedItems);
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java b/src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java
index a135f5b..bf29e4b 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexFormat51l.java
@@ -73,6 +73,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java b/src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java
index 8edfdf6..26330f6 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexIgetOrIput.java
@@ -25,10 +25,11 @@
@Override
public final void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
- DexField rewritten = appView.graphLens().lookupField(getField());
+ DexField rewritten = appView.graphLens().lookupField(getField(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexInitClass.java b/src/main/java/com/android/tools/r8/dex/code/DexInitClass.java
index 76a3289..47a4392 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexInitClass.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexInitClass.java
@@ -49,12 +49,13 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
// 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 = appView.graphLens().lookupType(clazz);
+ DexType rewrittenClass = appView.graphLens().lookupType(clazz, codeLens);
DexField clinitField = appView.initClassLens().getInitClassField(rewrittenClass);
clinitField.collectIndexedItems(appView, indexedItems);
}
@@ -123,7 +124,7 @@
LensCodeRewriterUtils rewriter) {
// 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 = mapping.getClinitField(rewrittenClass);
writeFirst(dest, buffer, getOpcode(clinitField));
write16BitReference(clinitField, buffer, mapping);
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java b/src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java
index a85b4a3..386a942 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexInstanceOf.java
@@ -57,10 +57,11 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = appView.graphLens().lookupType(getType());
+ DexType rewritten = appView.graphLens().lookupType(getType(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
@@ -91,7 +92,7 @@
GraphLens codeLens,
ObjectToOffsetMapping mapping,
LensCodeRewriterUtils rewriter) {
- DexType lookup = graphLens.lookupType(getType());
+ DexType lookup = graphLens.lookupType(getType(), codeLens);
writeFirst(B, A, dest);
write16BitReference(lookup, dest, mapping);
}
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexInstruction.java b/src/main/java/com/android/tools/r8/dex/code/DexInstruction.java
index 12fc104..545528a 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexInstruction.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexInstruction.java
@@ -407,6 +407,7 @@
public abstract void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter);
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java
index 21dd606..27f54c4 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustom.java
@@ -47,6 +47,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java
index 3bc4796..93096bd 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeCustomRange.java
@@ -47,6 +47,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java
index 763b823..2a31f06 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethod.java
@@ -27,13 +27,14 @@
@Override
public final void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
DexMethod rewritten =
appView
.graphLens()
- .lookupMethod(getMethod(), context.getReference(), getInvokeType())
+ .lookupMethod(getMethod(), context.getReference(), getInvokeType(), codeLens)
.getReference();
rewritten.collectIndexedItems(appView, indexedItems);
}
@@ -54,7 +55,7 @@
ObjectToOffsetMapping mapping,
LensCodeRewriterUtils rewriter) {
MethodLookupResult lookup =
- graphLens.lookupMethod(getMethod(), context.getReference(), getInvokeType());
+ graphLens.lookupMethod(getMethod(), context.getReference(), getInvokeType(), codeLens);
writeFirst(A, G, dest, lookup.getType().getDexOpcode());
write16BitReference(lookup.getReference(), dest, mapping);
write16BitValue(combineBytes(makeByte(F, E), makeByte(D, C)), dest);
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java b/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java
index 8809f06..9f53ea6 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexInvokeMethodRange.java
@@ -27,13 +27,14 @@
@Override
public final void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
DexMethod rewritten =
appView
.graphLens()
- .lookupMethod(getMethod(), context.getReference(), getInvokeType())
+ .lookupMethod(getMethod(), context.getReference(), getInvokeType(), codeLens)
.getReference();
rewritten.collectIndexedItems(appView, indexedItems);
}
@@ -54,7 +55,7 @@
ObjectToOffsetMapping mapping,
LensCodeRewriterUtils rewriter) {
MethodLookupResult lookup =
- graphLens.lookupMethod(getMethod(), context.getReference(), getInvokeType());
+ graphLens.lookupMethod(getMethod(), context.getReference(), getInvokeType(), codeLens);
writeFirst(AA, dest, lookup.getType().getDexOpcodeRange());
write16BitReference(lookup.getReference(), dest, mapping);
write16BitValue(CCCC, dest);
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java b/src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java
index d2adc25..88f47f8 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexItemBasedConstString.java
@@ -42,6 +42,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexNewArray.java b/src/main/java/com/android/tools/r8/dex/code/DexNewArray.java
index cad1490..e24cd52 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexNewArray.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexNewArray.java
@@ -47,10 +47,11 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = appView.graphLens().lookupType(getType());
+ DexType rewritten = appView.graphLens().lookupType(getType(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
@@ -81,7 +82,7 @@
GraphLens codeLens,
ObjectToOffsetMapping mapping,
LensCodeRewriterUtils rewriter) {
- DexType lookup = graphLens.lookupType(getType());
+ DexType lookup = graphLens.lookupType(getType(), codeLens);
writeFirst(B, A, dest);
write16BitReference(lookup, dest, mapping);
}
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java b/src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java
index 20067e5..f3885c6 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexNewInstance.java
@@ -53,10 +53,11 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = appView.graphLens().lookupType(getType());
+ DexType rewritten = appView.graphLens().lookupType(getType(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
@@ -68,7 +69,7 @@
GraphLens codeLens,
ObjectToOffsetMapping mapping,
LensCodeRewriterUtils rewriter) {
- DexType rewritten = graphLens.lookupType(getType());
+ DexType rewritten = graphLens.lookupType(getType(), codeLens);
writeFirst(AA, dest);
write16BitReference(rewritten, dest, mapping);
}
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java b/src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java
index 0ef15d8..0e02d63 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexNewUnboxedEnumInstance.java
@@ -53,6 +53,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java b/src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java
index f7e4684..7fc116b 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexRecordFieldValues.java
@@ -40,6 +40,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
diff --git a/src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java b/src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java
index 3fe34b47..9e0b6be 100644
--- a/src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java
+++ b/src/main/java/com/android/tools/r8/dex/code/DexSgetOrSput.java
@@ -26,10 +26,11 @@
@Override
public final void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
- DexField rewritten = appView.graphLens().lookupField(getField());
+ DexField rewritten = appView.graphLens().lookupField(getField(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
diff --git a/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java b/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
index 2974981..665a472 100644
--- a/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
+++ b/src/main/java/com/android/tools/r8/graph/DefaultInstanceInitializerCode.java
@@ -189,12 +189,13 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
DexMethod parentConstructor = getParentConstructor(context, rewriter.dexItemFactory());
MethodLookupResult lookupResult =
- appView.graphLens().lookupInvokeDirect(parentConstructor, context);
+ appView.graphLens().lookupInvokeDirect(parentConstructor, context, codeLens);
lookupResult.getReference().collectIndexedItems(appView, indexedItems);
}
@@ -398,8 +399,7 @@
LensCodeRewriterUtils lensCodeRewriter,
ObjectToOffsetMapping mapping) {
DexMethod parentConstructor = getParentConstructor(context, mapping.dexItemFactory());
- MethodLookupResult lookupResult = graphLens.lookupInvokeDirect(parentConstructor, context);
- new DexInvokeDirect(1, lookupResult.getReference(), 0, 0, 0, 0, 0)
+ new DexInvokeDirect(1, parentConstructor, 0, 0, 0, 0, 0)
.write(shortBuffer, context, graphLens, codeLens, mapping, lensCodeRewriter);
new DexReturnVoid().write(shortBuffer, context, graphLens, codeLens, mapping, lensCodeRewriter);
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexCode.java b/src/main/java/com/android/tools/r8/graph/DexCode.java
index 00febce..95d19ee 100644
--- a/src/main/java/com/android/tools/r8/graph/DexCode.java
+++ b/src/main/java/com/android/tools/r8/graph/DexCode.java
@@ -749,13 +749,14 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
highestSortingString = null;
for (DexInstruction insn : instructions) {
assert !insn.isDexItemBasedConstString();
- insn.collectIndexedItems(appView, indexedItems, context, rewriter);
+ insn.collectIndexedItems(appView, codeLens, indexedItems, context, rewriter);
if (insn.isConstString()) {
updateHighestSortingString(insn.asConstString().getString());
} else if (insn.isConstStringJumbo()) {
@@ -763,10 +764,10 @@
}
}
if (debugInfo != null) {
- getDebugInfoForWriting().collectIndexedItems(appView, indexedItems);
+ getDebugInfoForWriting().collectIndexedItems(appView, codeLens, indexedItems);
}
for (TryHandler handler : handlers) {
- handler.collectIndexedItems(appView, indexedItems);
+ handler.collectIndexedItems(appView, codeLens, indexedItems);
}
}
@@ -996,9 +997,10 @@
return Equatable.equalsImpl(this, other);
}
- public void collectIndexedItems(AppView<?> appView, IndexedItemCollection indexedItems) {
+ public void collectIndexedItems(
+ AppView<?> appView, GraphLens codeLens, IndexedItemCollection indexedItems) {
for (TypeAddrPair pair : pairs) {
- pair.collectIndexedItems(appView, indexedItems);
+ pair.collectIndexedItems(appView, codeLens, indexedItems);
}
}
@@ -1056,12 +1058,13 @@
return type;
}
- public DexType getType(GraphLens lens) {
- return lens.lookupType(type);
+ public DexType getType(GraphLens lens, GraphLens codeLens) {
+ return lens.lookupType(type, codeLens);
}
- public void collectIndexedItems(AppView<?> appView, IndexedItemCollection indexedItems) {
- DexType rewritten = getType(appView.graphLens());
+ public void collectIndexedItems(
+ AppView<?> appView, GraphLens codeLens, IndexedItemCollection indexedItems) {
+ DexType rewritten = getType(appView.graphLens(), codeLens);
rewritten.collectIndexedItems(appView, indexedItems);
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java b/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java
index ac495b4..5b4d625 100644
--- a/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java
+++ b/src/main/java/com/android/tools/r8/graph/DexDebugEvent.java
@@ -24,7 +24,8 @@
public static final DexDebugEvent[] EMPTY_ARRAY = {};
- public void collectIndexedItems(AppView<?> appView, IndexedItemCollection collection) {
+ public void collectIndexedItems(
+ AppView<?> appView, GraphLens codeLens, IndexedItemCollection collection) {
// Empty by default.
}
@@ -74,9 +75,12 @@
}
public final void writeOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
assert isWritableEvent();
- internalWriteOn(writer, mapping, graphLens);
+ internalWriteOn(writer, mapping, graphLens, codeLens);
}
boolean isWritableEvent() {
@@ -84,7 +88,10 @@
}
void internalWriteOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
throw new Unreachable();
}
@@ -125,7 +132,10 @@
@Override
public void internalWriteOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putByte(Constants.DBG_ADVANCE_PC);
writer.putUleb128(delta);
}
@@ -180,7 +190,10 @@
@Override
public void internalWriteOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putByte(Constants.DBG_SET_PROLOGUE_END);
}
@@ -230,7 +243,10 @@
@Override
public void internalWriteOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putByte(Constants.DBG_SET_EPILOGUE_BEGIN);
}
@@ -291,7 +307,10 @@
@Override
public void internalWriteOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putByte(Constants.DBG_ADVANCE_LINE);
writer.putSleb128(delta);
}
@@ -364,25 +383,29 @@
@Override
public void internalWriteOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putByte(signature == null
? Constants.DBG_START_LOCAL
: Constants.DBG_START_LOCAL_EXTENDED);
writer.putUleb128(registerNum);
writer.putString(name);
- writer.putType(graphLens.lookupType(type));
+ writer.putType(graphLens.lookupType(type, codeLens));
if (signature != null) {
writer.putString(signature);
}
}
@Override
- public void collectIndexedItems(AppView<?> appView, IndexedItemCollection collection) {
+ public void collectIndexedItems(
+ AppView<?> appView, GraphLens codeLens, IndexedItemCollection collection) {
if (name != null) {
name.collectIndexedItems(collection);
}
if (type != null) {
- DexType rewritten = appView.graphLens().lookupType(type);
+ DexType rewritten = appView.graphLens().lookupType(type, codeLens);
rewritten.collectIndexedItems(appView, collection);
}
if (signature != null) {
@@ -440,7 +463,10 @@
@Override
public void internalWriteOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putByte(Constants.DBG_END_LOCAL);
writer.putUleb128(registerNum);
}
@@ -492,7 +518,10 @@
@Override
public void internalWriteOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putByte(Constants.DBG_RESTART_LOCAL);
writer.putUleb128(registerNum);
}
@@ -551,7 +580,8 @@
}
@Override
- public void collectIndexedItems(AppView<?> appView, IndexedItemCollection collection) {
+ public void collectIndexedItems(
+ AppView<?> appView, GraphLens codeLens, IndexedItemCollection collection) {
fileName.collectIndexedItems(collection);
}
@@ -682,7 +712,10 @@
@Override
public void internalWriteOn(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putByte(value);
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java b/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java
index 3707fdf..24ee6d2 100644
--- a/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/DexDebugInfo.java
@@ -152,7 +152,8 @@
}
@Override
- public void collectIndexedItems(AppView<?> appView, IndexedItemCollection indexedItems) {
+ public void collectIndexedItems(
+ AppView<?> appView, GraphLens codeLens, IndexedItemCollection indexedItems) {
// No indexed items to collect.
}
@@ -172,15 +173,21 @@
@Override
public void write(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putUleb128(START_LINE);
writer.putUleb128(parameterCount);
for (int i = 0; i < parameterCount; i++) {
writer.putString(null);
}
- mapping.dexItemFactory().zeroChangeDefaultEvent.writeOn(writer, mapping, graphLens);
+ mapping.dexItemFactory().zeroChangeDefaultEvent.writeOn(writer, mapping, graphLens, codeLens);
for (int i = 0; i < maxPc; i++) {
- mapping.dexItemFactory().oneChangeDefaultEvent.writeOn(writer, mapping, graphLens);
+ mapping
+ .dexItemFactory()
+ .oneChangeDefaultEvent
+ .writeOn(writer, mapping, graphLens, codeLens);
}
writer.putByte(Constants.DBG_END_SEQUENCE);
}
@@ -263,14 +270,15 @@
return visitor.visit(this, other.asEventBasedInfo(), EventBasedDebugInfo::specify);
}
- public void collectIndexedItems(AppView<?> appView, IndexedItemCollection indexedItems) {
+ public void collectIndexedItems(
+ AppView<?> appView, GraphLens codeLens, IndexedItemCollection indexedItems) {
for (DexString parameter : parameters) {
if (parameter != null) {
parameter.collectIndexedItems(indexedItems);
}
}
for (DexDebugEvent event : events) {
- event.collectIndexedItems(appView, indexedItems);
+ event.collectIndexedItems(appView, codeLens, indexedItems);
}
}
@@ -363,8 +371,9 @@
}
@Override
- public void collectIndexedItems(AppView<?> appView, IndexedItemCollection indexedItems) {
- super.collectIndexedItems(appView, indexedItems);
+ public void collectIndexedItems(
+ AppView<?> appView, GraphLens codeLens, IndexedItemCollection indexedItems) {
+ super.collectIndexedItems(appView, codeLens, indexedItems);
}
@Override
@@ -385,14 +394,17 @@
@Override
public void write(
- DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens) {
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens) {
writer.putUleb128(startLine);
writer.putUleb128(parameters.length);
for (DexString name : parameters) {
writer.putString(name);
}
for (DexDebugEvent event : events) {
- event.writeOn(writer, mapping, graphLens);
+ event.writeOn(writer, mapping, graphLens, codeLens);
}
writer.putByte(Constants.DBG_END_SEQUENCE);
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexDebugInfoForWriting.java b/src/main/java/com/android/tools/r8/graph/DexDebugInfoForWriting.java
index 67ab2aa..a01f2fb 100644
--- a/src/main/java/com/android/tools/r8/graph/DexDebugInfoForWriting.java
+++ b/src/main/java/com/android/tools/r8/graph/DexDebugInfoForWriting.java
@@ -14,9 +14,14 @@
void collectMixedSectionItems(MixedSectionCollection collection);
- void collectIndexedItems(AppView<?> appView, IndexedItemCollection indexedItems);
+ void collectIndexedItems(
+ AppView<?> appView, GraphLens codeLens, IndexedItemCollection indexedItems);
int estimatedWriteSize();
- void write(DebugBytecodeWriter writer, ObjectToOffsetMapping mapping, GraphLens graphLens);
+ void write(
+ DebugBytecodeWriter writer,
+ ObjectToOffsetMapping mapping,
+ GraphLens graphLens,
+ GraphLens codeLens);
}
diff --git a/src/main/java/com/android/tools/r8/graph/DexWritableCode.java b/src/main/java/com/android/tools/r8/graph/DexWritableCode.java
index afe2afb..7cc7830 100644
--- a/src/main/java/com/android/tools/r8/graph/DexWritableCode.java
+++ b/src/main/java/com/android/tools/r8/graph/DexWritableCode.java
@@ -56,6 +56,7 @@
void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter);
diff --git a/src/main/java/com/android/tools/r8/graph/ProgramMethod.java b/src/main/java/com/android/tools/r8/graph/ProgramMethod.java
index 53e4ddc..9b4fa96 100644
--- a/src/main/java/com/android/tools/r8/graph/ProgramMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/ProgramMethod.java
@@ -72,7 +72,8 @@
getReference().collectIndexedItems(appView, indexedItems);
if (definition.hasCode()) {
Code code = definition.getCode();
- code.asDexWritableCode().collectIndexedItems(appView, indexedItems, this, rewriter);
+ GraphLens codeLens = code.getCodeLens(appView);
+ code.asDexWritableCode().collectIndexedItems(appView, codeLens, indexedItems, this, rewriter);
}
definition.annotations().collectIndexedItems(appView, indexedItems);
definition.parameterAnnotationsList.collectIndexedItems(appView, indexedItems);
diff --git a/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java b/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
index dc2bbdc..7e359ec 100644
--- a/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
+++ b/src/main/java/com/android/tools/r8/graph/ThrowExceptionCode.java
@@ -79,9 +79,11 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {
+ assert exceptionType.isIdenticalTo(appView.graphLens().lookupType(exceptionType, codeLens));
rewriter
.dexItemFactory()
.createInstanceInitializer(exceptionType)
diff --git a/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java b/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
index ddfbba1..48fe289 100644
--- a/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
+++ b/src/main/java/com/android/tools/r8/graph/ThrowNullCode.java
@@ -100,6 +100,7 @@
@Override
public void collectIndexedItems(
AppView<?> appView,
+ GraphLens codeLens,
IndexedItemCollection indexedItems,
ProgramMethod context,
LensCodeRewriterUtils rewriter) {