Keep static final library values in parsing This allows R8 to reason about the (constant) value of static final fields defined in the library. This change is consistent with the fact that javac allows inlining of such fields. Bug: b/469974081 Change-Id: Ic84f9361ade070aebd162ec8108c7a189cb409d7
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 a51e52e..c6f434b 100644 --- a/src/main/java/com/android/tools/r8/graph/DexItemFactory.java +++ b/src/main/java/com/android/tools/r8/graph/DexItemFactory.java
@@ -724,8 +724,6 @@ createStaticallyKnownType(androidResourcesDescriptorString); public final DexType androidContentContextType = createStaticallyKnownType(androidContextDescriptorString); - public final DexType androidContentPmPackageManagerType = - createStaticallyKnownType("Landroid/content/pm/PackageManager;"); public final DexString getColorName = createString("getColor"); public final DexProto androidGetColorProto = createProto(intType, intType); public final DexMethod androidResourcesGetColorMethod =
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 2539ff3..28153d8 100644 --- a/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java +++ b/src/main/java/com/android/tools/r8/graph/JarClassFileReader.java
@@ -744,13 +744,6 @@ return null; } DexItemFactory factory = parent.application.getFactory(); - // Allow argument-based assume rules for PackageManager fields. - // Other than that, set all static field values to unknown. We don't want to use the value - // from the library at compile time, as it can be different at runtime. - if (parent.classKind == ClassKind.LIBRARY - && !field.getHolderType().isIdenticalTo(factory.androidContentPmPackageManagerType)) { - return null; - } DexType type = field.getType(); if (type == factory.booleanType) { int i = (Integer) value;