Require code lens in getRenamedMemberSignature
Change-Id: Id17ad44db045e6b7fa3f620fba3abe207dc22ce8
diff --git a/src/main/java/com/android/tools/r8/graph/AppView.java b/src/main/java/com/android/tools/r8/graph/AppView.java
index 919de23..5ebfb20 100644
--- a/src/main/java/com/android/tools/r8/graph/AppView.java
+++ b/src/main/java/com/android/tools/r8/graph/AppView.java
@@ -85,6 +85,7 @@
private GraphLens codeLens = GraphLens.getIdentityLens();
private GraphLens graphLens = GraphLens.getIdentityLens();
private InitClassLens initClassLens;
+ private GraphLens kotlinMetadataLens = GraphLens.getIdentityLens();
private NamingLens namingLens = NamingLens.getIdentityLens();
private ProguardCompatibilityActions proguardCompatibilityActions;
private RootSet rootSet;
@@ -594,6 +595,14 @@
this.initClassLens = initClassLens;
}
+ public GraphLens getKotlinMetadataLens() {
+ return kotlinMetadataLens;
+ }
+
+ public void setKotlinMetadataLens(GraphLens kotlinMetadataLens) {
+ this.kotlinMetadataLens = kotlinMetadataLens;
+ }
+
public void setInitializedClassesInInstanceMethods(
InitializedClassesInInstanceMethods initializedClassesInInstanceMethods) {
this.initializedClassesInInstanceMethods = initializedClassesInInstanceMethods;
@@ -939,6 +948,7 @@
firstUnappliedLens.withAlternativeParentLens(
newMemberRebindingLens,
() -> {
+ GraphLens appliedLensInModifiedLens = GraphLens.getIdentityLens();
if (appView.hasLiveness()) {
appView
.withLiveness()
@@ -957,7 +967,9 @@
appView.setArtProfileCollection(
appView.getArtProfileCollection().rewrittenWithLens(appView, lens));
appView.setAssumeInfoCollection(
- appView.getAssumeInfoCollection().rewrittenWithLens(appView, lens));
+ appView
+ .getAssumeInfoCollection()
+ .rewrittenWithLens(appView, lens, appliedLensInModifiedLens));
if (appView.hasInitClassLens()) {
appView.setInitClassLens(appView.initClassLens().rewrittenWithLens(lens));
}
diff --git a/src/main/java/com/android/tools/r8/graph/lens/GraphLens.java b/src/main/java/com/android/tools/r8/graph/lens/GraphLens.java
index bd71700..6f292cb 100644
--- a/src/main/java/com/android/tools/r8/graph/lens/GraphLens.java
+++ b/src/main/java/com/android/tools/r8/graph/lens/GraphLens.java
@@ -152,10 +152,11 @@
public abstract DexField getRenamedFieldSignature(DexField originalField, GraphLens codeLens);
- public final DexMember<?, ?> getRenamedMemberSignature(DexMember<?, ?> originalMember) {
+ public final DexMember<?, ?> getRenamedMemberSignature(
+ DexMember<?, ?> originalMember, GraphLens codeLens) {
return originalMember.isDexField()
- ? getRenamedFieldSignature(originalMember.asDexField())
- : getRenamedMethodSignature(originalMember.asDexMethod());
+ ? getRenamedFieldSignature(originalMember.asDexField(), codeLens)
+ : getRenamedMethodSignature(originalMember.asDexMethod(), codeLens);
}
public final DexMethod getRenamedMethodSignature(DexMethod originalMethod) {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataMembersTracker.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataMembersTracker.java
index 88691a9..98dc167 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataMembersTracker.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataMembersTracker.java
@@ -6,7 +6,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexMember;
-import com.android.tools.r8.graph.DexReference;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.utils.IterableUtils;
import com.google.common.collect.Sets;
@@ -48,7 +47,10 @@
// underlying types are changed.
diffComparedToRewritten.forEach(
diff -> {
- DexReference rewrittenReference = appView.graphLens().lookupReference(diff);
+ DexMember<?, ?> rewrittenReference =
+ appView
+ .graphLens()
+ .getRenamedMemberSignature(diff, appView.getKotlinMetadataLens());
assert diffComparedToOriginal.contains(rewrittenReference);
assert IterableUtils.findOrDefault(
diff.getReferencedTypes(), type -> isKotlinJvmType(appView, type), null)
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
index 858a57c..04392f3 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
@@ -20,6 +20,7 @@
import com.android.tools.r8.graph.DexValue.DexValueArray;
import com.android.tools.r8.graph.DexValue.DexValueInt;
import com.android.tools.r8.graph.DexValue.DexValueString;
+import com.android.tools.r8.graph.lens.GraphLens;
import com.android.tools.r8.utils.BooleanBox;
import com.android.tools.r8.utils.ConsumerUtils;
import com.android.tools.r8.utils.Pair;
@@ -84,7 +85,10 @@
}
public void runForR8(ExecutorService executorService) throws ExecutionException {
- DexType rewrittenMetadataType = appView.graphLens().lookupClassType(factory.kotlinMetadataType);
+ GraphLens graphLens = appView.graphLens();
+ GraphLens kotlinMetadataLens = appView.getKotlinMetadataLens();
+ DexType rewrittenMetadataType =
+ graphLens.lookupClassType(factory.kotlinMetadataType, kotlinMetadataLens);
DexClass kotlinMetadata = appView.definitionFor(rewrittenMetadataType);
WriteMetadataFieldInfo writeMetadataFieldInfo =
new WriteMetadataFieldInfo(
@@ -124,6 +128,7 @@
writeKotlinInfoToAnnotation(clazz, kotlinInfo, oldMeta, writeMetadataFieldInfo);
},
executorService);
+ appView.setKotlinMetadataLens(appView.graphLens());
}
public void runForD8(ExecutorService executorService) throws ExecutionException {
diff --git a/src/main/java/com/android/tools/r8/shaking/AssumeInfoCollection.java b/src/main/java/com/android/tools/r8/shaking/AssumeInfoCollection.java
index bc3f728..75d7671 100644
--- a/src/main/java/com/android/tools/r8/shaking/AssumeInfoCollection.java
+++ b/src/main/java/com/android/tools/r8/shaking/AssumeInfoCollection.java
@@ -60,11 +60,13 @@
return isSideEffectFree(member.getReference());
}
- public AssumeInfoCollection rewrittenWithLens(AppView<?> appView, GraphLens graphLens) {
+ public AssumeInfoCollection rewrittenWithLens(
+ AppView<?> appView, GraphLens graphLens, GraphLens appliedLens) {
Map<DexMember<?, ?>, AssumeInfo> rewrittenCollection = new IdentityHashMap<>();
backing.forEach(
(reference, info) -> {
- DexMember<?, ?> rewrittenReference = graphLens.getRenamedMemberSignature(reference);
+ DexMember<?, ?> rewrittenReference =
+ graphLens.getRenamedMemberSignature(reference, appliedLens);
AssumeInfo rewrittenInfo = info.rewrittenWithLens(appView, graphLens);
assert !rewrittenInfo.isEmpty();
rewrittenCollection.put(rewrittenReference, rewrittenInfo);