Introduce new KotlinMetadataUseRegistry
This changes the accept(DexDefinitionSupplier) method of the EnqueuerMetadataTraceable interface to accept(KotlinMetadataUseRegistry).
The KotlinMetadataUseRegistry interface declares a single acceptType(Dextype) method.
Bug: b/409260720
Change-Id: I4b5aa15a0cb53f49cdee06c503712d253a0539df
diff --git a/src/main/java/com/android/tools/r8/kotlin/ConcreteKotlinPropertyInfo.java b/src/main/java/com/android/tools/r8/kotlin/ConcreteKotlinPropertyInfo.java
index aa46ee2..6fa9e6b 100644
--- a/src/main/java/com/android/tools/r8/kotlin/ConcreteKotlinPropertyInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/ConcreteKotlinPropertyInfo.java
@@ -9,7 +9,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
@@ -201,30 +200,30 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- returnType.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ returnType.trace(registry);
if (receiverParameterType != null) {
- receiverParameterType.trace(definitionSupplier);
+ receiverParameterType.trace(registry);
}
if (setterParameter != null) {
- setterParameter.trace(definitionSupplier);
+ setterParameter.trace(registry);
}
- forEachApply(typeParameters, param -> param::trace, definitionSupplier);
- forEachApply(contextReceiverTypes, type -> type::trace, definitionSupplier);
+ forEachApply(typeParameters, param -> param::trace, registry);
+ forEachApply(contextReceiverTypes, type -> type::trace, registry);
if (fieldSignature != null) {
- fieldSignature.trace(definitionSupplier);
+ fieldSignature.trace(registry);
}
if (getterSignature != null) {
- getterSignature.trace(definitionSupplier);
+ getterSignature.trace(registry);
}
if (setterSignature != null) {
- setterSignature.trace(definitionSupplier);
+ setterSignature.trace(registry);
}
if (syntheticMethodForAnnotations != null) {
- syntheticMethodForAnnotations.trace(definitionSupplier);
+ syntheticMethodForAnnotations.trace(registry);
}
if (syntheticMethodForDelegate != null) {
- syntheticMethodForDelegate.trace(definitionSupplier);
+ syntheticMethodForDelegate.trace(registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java
index ffbbe57..75249b6 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationArgumentInfo.java
@@ -5,7 +5,6 @@
package com.android.tools.r8.kotlin;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.kotlin.Kotlin.ClassClassifiers;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
@@ -71,8 +70,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- value.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ value.trace(registry);
}
@Override
@@ -102,8 +101,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- enumClassName.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ enumClassName.trace(registry);
}
@Override
@@ -131,8 +130,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- value.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ value.trace(registry);
}
@Override
@@ -170,9 +169,9 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
for (KotlinAnnotationArgumentInfo kotlinAnnotationArgumentInfo : value) {
- kotlinAnnotationArgumentInfo.trace(definitionSupplier);
+ kotlinAnnotationArgumentInfo.trace(registry);
}
}
@@ -208,7 +207,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
// Nothing to trace
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java
index 85fd152..5022d8c 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinAnnotationInfo.java
@@ -5,7 +5,6 @@
package com.android.tools.r8.kotlin;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.BooleanBox;
@@ -80,8 +79,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- annotationType.trace(definitionSupplier);
- arguments.forEach((ignored, arg) -> arg.trace(definitionSupplier));
+ public void trace(KotlinMetadataUseRegistry registry) {
+ annotationType.trace(registry);
+ arguments.forEach((ignored, arg) -> arg.trace(registry));
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
index 023937c..4197ffc 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassInfo.java
@@ -12,7 +12,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
@@ -458,18 +457,18 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- forEachApply(constructorsWithNoBacking, constructor -> constructor::trace, definitionSupplier);
- declarationContainerInfo.trace(definitionSupplier);
- forEachApply(typeParameters, param -> param::trace, definitionSupplier);
- forEachApply(superTypes, type -> type::trace, definitionSupplier);
- forEachApply(sealedSubClasses, sealedClass -> sealedClass::trace, definitionSupplier);
- forEachApply(nestedClasses, nested -> nested::trace, definitionSupplier);
- forEachApply(contextReceiverTypes, nested -> nested::trace, definitionSupplier);
- localDelegatedProperties.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ forEachApply(constructorsWithNoBacking, constructor -> constructor::trace, registry);
+ declarationContainerInfo.trace(registry);
+ forEachApply(typeParameters, param -> param::trace, registry);
+ forEachApply(superTypes, type -> type::trace, registry);
+ forEachApply(sealedSubClasses, sealedClass -> sealedClass::trace, registry);
+ forEachApply(nestedClasses, nested -> nested::trace, registry);
+ forEachApply(contextReceiverTypes, nested -> nested::trace, registry);
+ localDelegatedProperties.trace(registry);
// TODO(b/154347404): trace enum entries.
if (anonymousObjectOrigin != null) {
- anonymousObjectOrigin.trace(definitionSupplier);
+ anonymousObjectOrigin.trace(registry);
}
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
index 715d376..018c084 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassMetadataReader.java
@@ -11,7 +11,6 @@
import com.android.tools.r8.graph.DexAnnotation;
import com.android.tools.r8.graph.DexAnnotationElement;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedAnnotation;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
@@ -142,11 +141,8 @@
}
}
- public static boolean hasKotlinClassMetadataAnnotation(
- DexClass clazz, DexDefinitionSupplier definitionSupplier) {
- return clazz
- .annotations()
- .hasAnnotation(definitionSupplier.dexItemFactory().kotlinMetadataType);
+ public static boolean hasKotlinClassMetadataAnnotation(DexClass clazz, DexItemFactory factory) {
+ return clazz.annotations().hasAnnotation(factory.kotlinMetadataType);
}
public static KotlinClassMetadata toKotlinClassMetadata(
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java
index 83f3612..c3eb30f 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinClassifierInfo.java
@@ -7,7 +7,6 @@
import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getKotlinLocalOrAnonymousNameFromDescriptor;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.lens.GraphLens;
@@ -77,8 +76,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- type.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ type.trace(registry);
}
@Override
@@ -102,7 +101,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
// Intentionally empty.
}
}
@@ -122,7 +121,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
// Intentionally empty.
}
}
@@ -141,7 +140,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
// Intentionally empty.
}
}
@@ -160,7 +159,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
// Intentionally empty.
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinCompanionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinCompanionInfo.java
index 7cbe845..3994d6e 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinCompanionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinCompanionInfo.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.kotlin;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.naming.NamingLens;
@@ -37,7 +36,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
// Do nothing.
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java
index 44fb122..1ef627c 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinConstructorInfo.java
@@ -8,7 +8,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.utils.Reporter;
@@ -80,10 +79,10 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- forEachApply(valueParameters, param -> param::trace, definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ forEachApply(valueParameters, param -> param::trace, registry);
if (signature != null) {
- signature.trace(definitionSupplier);
+ signature.trace(registry);
}
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinContractInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinContractInfo.java
index 4fb6774..73656ff 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinContractInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinContractInfo.java
@@ -8,7 +8,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.Reporter;
@@ -45,8 +44,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- forEachApply(effects, effect -> effect::trace, definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ forEachApply(effects, effect -> effect::trace, registry);
}
boolean rewrite(Consumer<KmContract> consumer, AppView<?> appView) {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
index d1d9441..0c28fa7 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinDeclarationContainerInfo.java
@@ -11,7 +11,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
@@ -269,10 +268,10 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- forEachApply(typeAliases, alias -> alias::trace, definitionSupplier);
- forEachApply(functionsWithNoBacking, function -> function::trace, definitionSupplier);
- forEachApply(propertiesWithNoBacking, property -> property::trace, definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ forEachApply(typeAliases, alias -> alias::trace, registry);
+ forEachApply(functionsWithNoBacking, function -> function::trace, registry);
+ forEachApply(propertiesWithNoBacking, property -> property::trace, registry);
}
public static class KotlinPropertyGroup {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java
index f87cd78..4cd7159 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectExpressionInfo.java
@@ -9,7 +9,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.Reporter;
@@ -67,15 +66,15 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
if (this == NO_EXPRESSION) {
return;
}
if (isInstanceType != null) {
- isInstanceType.trace(definitionSupplier);
+ isInstanceType.trace(registry);
}
- forEachApply(andArguments, arg -> arg::trace, definitionSupplier);
- forEachApply(orArguments, arg -> arg::trace, definitionSupplier);
+ forEachApply(andArguments, arg -> arg::trace, registry);
+ forEachApply(orArguments, arg -> arg::trace, registry);
}
boolean rewrite(Consumer<KmEffectExpression> consumer, AppView<?> appView) {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectInfo.java
index 6fc3950..1d1dfdd 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinEffectInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinEffectInfo.java
@@ -8,7 +8,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.Reporter;
@@ -45,9 +44,9 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- forEachApply(constructorArguments, arg -> arg::trace, definitionSupplier);
- conclusion.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ forEachApply(constructorArguments, arg -> arg::trace, registry);
+ conclusion.trace(registry);
}
boolean rewrite(Consumer<KmEffect> consumer, AppView<?> appView) {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinEnumEntryInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinEnumEntryInfo.java
index 4c3197d..b7cd142 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinEnumEntryInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinEnumEntryInfo.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.kotlin;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.naming.NamingLens;
@@ -37,7 +36,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
// Do nothing.
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java
index c845cea..91a92cc 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFileFacadeInfo.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.utils.Pair;
import java.util.function.Consumer;
@@ -78,7 +77,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- packageInfo.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ packageInfo.trace(registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinFlexibleTypeUpperBoundInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinFlexibleTypeUpperBoundInfo.java
index 08e7085..db35d6f 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFlexibleTypeUpperBoundInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFlexibleTypeUpperBoundInfo.java
@@ -5,7 +5,6 @@
package com.android.tools.r8.kotlin;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.Reporter;
@@ -53,7 +52,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
if (this == NO_FLEXIBLE_UPPER_BOUND) {
return;
}
@@ -61,6 +60,6 @@
assert false;
return;
}
- kotlinTypeInfo.trace(definitionSupplier);
+ kotlinTypeInfo.trace(registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java
index c880a0e..ac718b1 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinFunctionInfo.java
@@ -9,7 +9,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.utils.ListUtils;
@@ -195,20 +194,20 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- forEachApply(valueParameters, param -> param::trace, definitionSupplier);
- returnType.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ forEachApply(valueParameters, param -> param::trace, registry);
+ returnType.trace(registry);
if (receiverParameterType != null) {
- receiverParameterType.trace(definitionSupplier);
+ receiverParameterType.trace(registry);
}
- forEachApply(typeParameters, param -> param::trace, definitionSupplier);
- forEachApply(contextReceiverTypes, type -> type::trace, definitionSupplier);
+ forEachApply(typeParameters, param -> param::trace, registry);
+ forEachApply(contextReceiverTypes, type -> type::trace, registry);
if (signature != null) {
- signature.trace(definitionSupplier);
+ signature.trace(registry);
}
if (lambdaClassOrigin != null) {
- lambdaClassOrigin.trace(definitionSupplier);
+ lambdaClassOrigin.trace(registry);
}
- contract.trace(definitionSupplier);
+ contract.trace(registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmFieldSignatureInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmFieldSignatureInfo.java
index 2c5598d..43c41b6 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmFieldSignatureInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmFieldSignatureInfo.java
@@ -5,7 +5,6 @@
package com.android.tools.r8.kotlin;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
@@ -56,7 +55,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- type.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ type.trace(registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMethodSignatureInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMethodSignatureInfo.java
index 917f242..62f77de 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMethodSignatureInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinJvmMethodSignatureInfo.java
@@ -7,7 +7,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
@@ -121,12 +120,12 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
if (invalidDescriptor != null) {
return;
}
assert returnType != null;
- returnType.trace(definitionSupplier);
- forEachApply(parameters, param -> param::trace, definitionSupplier);
+ returnType.trace(registry);
+ forEachApply(parameters, param -> param::trace, registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java
index d9ecef0..86f7b3d 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinLambdaInfo.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
@@ -66,7 +65,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- function.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ function.trace(registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinLocalDelegatedPropertyInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinLocalDelegatedPropertyInfo.java
index 94a2001..1428dac 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinLocalDelegatedPropertyInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinLocalDelegatedPropertyInfo.java
@@ -8,7 +8,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.Reporter;
@@ -48,8 +47,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- forEachApply(propertyInfos, prop -> prop::trace, definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ forEachApply(propertyInfos, prop -> prop::trace, registry);
}
boolean rewrite(Consumer<KmProperty> consumer, AppView<?> appView) {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataEnqueuerExtension.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataEnqueuerExtension.java
index 26a1258..4cad91a 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataEnqueuerExtension.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataEnqueuerExtension.java
@@ -7,12 +7,9 @@
import static com.android.tools.r8.kotlin.KotlinClassMetadataReader.hasKotlinClassMetadataAnnotation;
import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getNoKotlinInfo;
-import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.ClassResolutionResult;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedMember;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexItemFactory;
@@ -39,6 +36,7 @@
private final AppView<?> appView;
private final EnqueuerDefinitionSupplier enqueuerDefinitionSupplier;
+ private final DexItemFactory factory;
private final Set<DexType> prunedTypes;
private final AtomicBoolean reportedUnknownMetadataVersion = new AtomicBoolean(false);
@@ -48,6 +46,7 @@
Set<DexType> prunedTypes) {
this.appView = appView;
this.enqueuerDefinitionSupplier = enqueuerDefinitionSupplier;
+ this.factory = appView.dexItemFactory();
this.prunedTypes = prunedTypes;
}
@@ -78,7 +77,7 @@
// In the first round of tree shaking build up all metadata such that it can be traced later.
boolean keepKotlinMetadata =
KeepClassInfo.isKotlinMetadataClassKept(
- appView.dexItemFactory(),
+ factory,
appView.options(),
appView.appInfo()::definitionForWithoutExistenceAssert,
enqueuer::getKeepInfo);
@@ -100,8 +99,7 @@
clazz.clearKotlinInfo();
clazz.removeAnnotations(
annotation ->
- annotation.getAnnotationType()
- == appView.dexItemFactory().kotlinMetadataType);
+ annotation.getAnnotationType().isIdenticalTo(factory.kotlinMetadataType));
} else {
clazz.setKotlinInfo(
KotlinClassMetadataReader.getKotlinInfo(
@@ -119,8 +117,8 @@
EnclosingMethodAttribute enclosingAttribute =
localOrAnonymousClass.getEnclosingMethodAttribute();
DexClass holder =
- definitionsForContext(localOrAnonymousClass)
- .definitionForHolder(enclosingAttribute.getEnclosingMethod());
+ enqueuerDefinitionSupplier.definitionFor(
+ enclosingAttribute.getEnclosingMethod().getHolderType(), localOrAnonymousClass);
if (holder == null) {
continue;
}
@@ -147,12 +145,11 @@
clazz.members().forEach(DexEncodedMember::clearKotlinInfo);
clazz.removeAnnotations(
annotation ->
- annotation.getAnnotationType()
- == appView.dexItemFactory().kotlinMetadataType);
+ annotation.getAnnotationType().isIdenticalTo(factory.kotlinMetadataType));
} else {
// Use the concrete getNoKotlinInfo() instead of isNoKotlinInformation() to handle
// invalid kotlin info as well.
- assert hasKotlinClassMetadataAnnotation(clazz, definitionsForContext(clazz))
+ assert hasKotlinClassMetadataAnnotation(clazz, factory)
== (clazz.getKotlinInfo() != getNoKotlinInfo())
: clazz.toSourceString()
+ " "
@@ -170,7 +167,7 @@
});
}
- public class KotlinMetadataDefinitionSupplier implements DexDefinitionSupplier {
+ private static class KotlinMetadataDefinitionSupplier implements KotlinMetadataUseRegistry {
private final ProgramDefinition context;
private final EnqueuerDefinitionSupplier enqueuerDefinitionSupplier;
@@ -186,24 +183,14 @@
}
@Override
- public ClassResolutionResult contextIndependentDefinitionForWithResolutionResult(DexType type) {
- throw new Unreachable("Not yet used");
- }
-
- @Override
- public DexClass definitionFor(DexType type) {
+ public void registerType(DexType type) {
// TODO(b/157700128) Metadata cannot at this point keep anything alive. Therefore, if a type
// has been pruned it may still be referenced, so we do an early check here to ensure it will
// not end up as. Ideally, those types should be removed by a pass on the modeled data.
if (prunedTypes != null && prunedTypes.contains(type)) {
- return null;
+ return;
}
- return enqueuerDefinitionSupplier.definitionFor(type, context);
- }
-
- @Override
- public DexItemFactory dexItemFactory() {
- return appView.dexItemFactory();
+ enqueuerDefinitionSupplier.definitionFor(type, context);
}
}
}
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 a7cb201..ae75ef0 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataRewriter.java
@@ -9,14 +9,11 @@
import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getNoKotlinInfo;
import static com.android.tools.r8.kotlin.KotlinMetadataWriter.kotlinMetadataToString;
-import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.ClassResolutionResult;
import com.android.tools.r8.graph.DexAnnotation;
import com.android.tools.r8.graph.DexAnnotationElement;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedAnnotation;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexProgramClass;
@@ -197,36 +194,20 @@
DexProgramClass clazz, KotlinClassLevelInfo kotlinInfo) {
if (appView.options().partialSubCompilationConfiguration != null) {
assert appView.options().partialSubCompilationConfiguration.isR8();
- DexDefinitionSupplier definitionSupplier =
- new DexDefinitionSupplier() {
- @Override
- public ClassResolutionResult contextIndependentDefinitionForWithResolutionResult(
- DexType type) {
- throw new Unreachable();
- }
-
- @Override
- public DexClass definitionFor(DexType type) {
- DexClass result = appView.appInfo().definitionForWithoutExistenceAssert(type);
- if (result == null) {
- appView
- .options()
- .partialSubCompilationConfiguration
- .asR8()
- .d8MissingClasses
- .add(type);
- }
- return result;
- }
-
- @Override
- public DexItemFactory dexItemFactory() {
- throw new Unreachable();
+ KotlinMetadataUseRegistry registry =
+ type -> {
+ DexClass result = appView.appInfo().definitionForWithoutExistenceAssert(type);
+ if (result == null) {
+ appView
+ .options()
+ .partialSubCompilationConfiguration
+ .asR8()
+ .d8MissingClasses
+ .add(type);
}
};
- kotlinInfo.trace(definitionSupplier);
- clazz.forEachProgramMember(
- member -> member.getDefinition().getKotlinInfo().trace(definitionSupplier));
+ kotlinInfo.trace(registry);
+ clazz.forEachProgramMember(member -> member.getDefinition().getKotlinInfo().trace(registry));
}
return true;
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUseRegistry.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUseRegistry.java
new file mode 100644
index 0000000..b6408c5
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUseRegistry.java
@@ -0,0 +1,11 @@
+// Copyright (c) 2025, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+package com.android.tools.r8.kotlin;
+
+import com.android.tools.r8.graph.DexType;
+
+public interface KotlinMetadataUseRegistry {
+
+ void registerType(DexType type);
+}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUtils.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUtils.java
index a4c7ec6..a3ee56a 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUtils.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMetadataUtils.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.errors.Unreachable;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexField;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexMethod;
@@ -72,7 +71,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
// No information needed to trace.
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java
index f29f38b..8a7efd8 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassFacadeInfo.java
@@ -9,7 +9,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.utils.Pair;
import com.google.common.collect.ImmutableList;
@@ -89,7 +88,7 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- forEachApply(partClassNames, type -> type::trace, definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ forEachApply(partClassNames, type -> type::trace, registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java
index 2f8381b..b127f0a 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinMultiFileClassPartInfo.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.utils.Pair;
import java.util.function.Consumer;
@@ -76,8 +75,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- packageInfo.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ packageInfo.trace(registry);
}
public String getFacadeClassName() {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java
index 2771257..36bfab9 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinPackageInfo.java
@@ -9,7 +9,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
@@ -88,9 +87,9 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- containerInfo.trace(definitionSupplier);
- localDelegatedProperties.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ containerInfo.trace(registry);
+ localDelegatedProperties.trace(registry);
}
public String getModuleName() {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfoDelegate.java b/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfoDelegate.java
index 095f87a..fc11196 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfoDelegate.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinPropertyInfoDelegate.java
@@ -5,7 +5,6 @@
package com.android.tools.r8.kotlin;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexEncodedField;
import com.android.tools.r8.graph.DexEncodedMethod;
import java.util.function.Consumer;
@@ -71,8 +70,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- delegate.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ delegate.trace(registry);
}
@Override
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
index c45373e..4c34c40 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinSyntheticClassInfo.java
@@ -8,7 +8,6 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexClass;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.utils.Box;
import com.android.tools.r8.utils.Pair;
import kotlin.Metadata;
@@ -85,9 +84,9 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
if (lambda != null) {
- lambda.trace(definitionSupplier);
+ lambda.trace(registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeAliasInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeAliasInfo.java
index 9371fa1..bb87bb2 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeAliasInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeAliasInfo.java
@@ -8,7 +8,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.Reporter;
@@ -73,10 +72,10 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- underlyingType.trace(definitionSupplier);
- expandedType.trace(definitionSupplier);
- forEachApply(typeParameters, typeParam -> typeParam::trace, definitionSupplier);
- forEachApply(annotations, annotation -> annotation::trace, definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ underlyingType.trace(registry);
+ expandedType.trace(registry);
+ forEachApply(typeParameters, typeParam -> typeParam::trace, registry);
+ forEachApply(annotations, annotation -> annotation::trace, registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java
index 25dc018..518e769 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeInfo.java
@@ -9,7 +9,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.lens.GraphLens;
@@ -113,17 +112,17 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- classifier.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ classifier.trace(registry);
if (abbreviatedType != null) {
- abbreviatedType.trace(definitionSupplier);
+ abbreviatedType.trace(registry);
}
if (outerType != null) {
- outerType.trace(definitionSupplier);
+ outerType.trace(registry);
}
- forEachApply(arguments, argument -> argument::trace, definitionSupplier);
- flexibleTypeUpperBound.trace(definitionSupplier);
- forEachApply(annotations, annotation -> annotation::trace, definitionSupplier);
+ forEachApply(arguments, argument -> argument::trace, registry);
+ flexibleTypeUpperBound.trace(registry);
+ forEachApply(annotations, annotation -> annotation::trace, registry);
}
public DexType rewriteType(GraphLens graphLens, GraphLens codeLens) {
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeParameterInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeParameterInfo.java
index 4ba90b6..6a8cb9a 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeParameterInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeParameterInfo.java
@@ -8,7 +8,6 @@
import static com.android.tools.r8.utils.FunctionUtils.forEachApply;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.Reporter;
@@ -92,8 +91,8 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- forEachApply(originalUpperBounds, upperBound -> upperBound::trace, definitionSupplier);
- forEachApply(annotations, annotation -> annotation::trace, definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ forEachApply(originalUpperBounds, upperBound -> upperBound::trace, registry);
+ forEachApply(annotations, annotation -> annotation::trace, registry);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
index d526cfc..1b7f2bd 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeProjectionInfo.java
@@ -5,7 +5,6 @@
package com.android.tools.r8.kotlin;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.Reporter;
@@ -46,9 +45,9 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
if (typeInfo != null) {
- typeInfo.trace(definitionSupplier);
+ typeInfo.trace(registry);
}
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeReference.java b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeReference.java
index 196b6ba..89b0955 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinTypeReference.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinTypeReference.java
@@ -7,7 +7,6 @@
import static com.android.tools.r8.kotlin.KotlinMetadataUtils.getKotlinLocalOrAnonymousNameFromDescriptor;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.graph.DexType;
import com.android.tools.r8.graph.lens.GraphLens;
@@ -177,10 +176,9 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
+ public void trace(KotlinMetadataUseRegistry registry) {
if (known != null && known.isClassType()) {
- // Lookup the definition, ignoring the result. This populates the sets in the Enqueuer.
- definitionSupplier.contextIndependentDefinitionFor(known);
+ registry.registerType(known);
}
}
diff --git a/src/main/java/com/android/tools/r8/kotlin/KotlinValueParameterInfo.java b/src/main/java/com/android/tools/r8/kotlin/KotlinValueParameterInfo.java
index 5f54ce1..1d31906 100644
--- a/src/main/java/com/android/tools/r8/kotlin/KotlinValueParameterInfo.java
+++ b/src/main/java/com/android/tools/r8/kotlin/KotlinValueParameterInfo.java
@@ -7,7 +7,6 @@
import static com.android.tools.r8.kotlin.KotlinMetadataUtils.rewriteIfNotNull;
import com.android.tools.r8.graph.AppView;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexItemFactory;
import com.android.tools.r8.shaking.EnqueuerMetadataTraceable;
import com.android.tools.r8.utils.Reporter;
@@ -78,10 +77,10 @@
}
@Override
- public void trace(DexDefinitionSupplier definitionSupplier) {
- type.trace(definitionSupplier);
+ public void trace(KotlinMetadataUseRegistry registry) {
+ type.trace(registry);
if (varargElementType != null) {
- varargElementType.trace(definitionSupplier);
+ varargElementType.trace(registry);
}
}
}
diff --git a/src/main/java/com/android/tools/r8/shaking/EnqueuerMetadataTraceable.java b/src/main/java/com/android/tools/r8/shaking/EnqueuerMetadataTraceable.java
index e17e571..5fc0f37 100644
--- a/src/main/java/com/android/tools/r8/shaking/EnqueuerMetadataTraceable.java
+++ b/src/main/java/com/android/tools/r8/shaking/EnqueuerMetadataTraceable.java
@@ -4,9 +4,9 @@
package com.android.tools.r8.shaking;
-import com.android.tools.r8.graph.DexDefinitionSupplier;
+import com.android.tools.r8.kotlin.KotlinMetadataUseRegistry;
public interface EnqueuerMetadataTraceable {
- void trace(DexDefinitionSupplier definitionSupplier);
+ void trace(KotlinMetadataUseRegistry registry);
}