Retain dalvik JNI annotations despite retention policy.
Change-Id: Ib9d2bad49adc2cf2b89b4b699550c0b6a0809c42
diff --git a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
index dd22db9..c1004de 100644
--- a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
+++ b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
@@ -326,6 +326,12 @@
public final DexType annotationReachabilitySensitive =
createType("Ldalvik/annotation/optimization/ReachabilitySensitive;");
+ // Runtime affecting yet class-retained annotations.
+ public final DexType dalvikFastNativeAnnotation =
+ createType("Ldalvik/annotation/optimization/FastNative;");
+ public final DexType dalvikCriticalNativeAnnotation =
+ createType("Ldalvik/annotation/optimization/CriticalNative;");
+
private static final String METAFACTORY_METHOD_NAME = "metafactory";
private static final String METAFACTORY_ALT_METHOD_NAME = "altMetafactory";
diff --git a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
index 168d3e9..5a80fe0 100644
--- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
+++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -169,10 +169,14 @@
if (application.options.readCompileTimeAnnotations) {
return true;
}
+ DexType type = application.getTypeFromDescriptor(desc);
+ if (type == application.options.itemFactory.dalvikFastNativeAnnotation
+ || type == application.options.itemFactory.dalvikCriticalNativeAnnotation) {
+ return true;
+ }
if (application.options.processCovariantReturnTypeAnnotations) {
// @CovariantReturnType annotations are processed by CovariantReturnTypeAnnotationTransformer,
// they thus need to be read here and will then be removed as part of the processing.
- DexType type = application.getTypeFromDescriptor(desc);
return CovariantReturnTypeAnnotationTransformer.isCovariantReturnTypeAnnotation(
type, application.options.itemFactory);
}