Revert "Reland "Include default field values for kept classes""
This reverts commit 18fffd7b6e0ba315d8120317bf5719c89b24afe6.
Reason for revert: Fails with NPE in platform, see:
https://android-build.corp.google.com/test_investigate/invocation/I04800010289154153/test/TR56429348958799735/?blocking=blocking&status=none
Change-Id: Iadd7854b06ee31078c75aa43155ef09eecf12461
diff --git a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/DefaultFieldValueJoiner.java b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/DefaultFieldValueJoiner.java
index 45848ad..e750309 100644
--- a/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/DefaultFieldValueJoiner.java
+++ b/src/main/java/com/android/tools/r8/optimize/argumentpropagation/propagation/DefaultFieldValueJoiner.java
@@ -258,12 +258,6 @@
(holderType, fields) -> {
assert !fields.isEmpty();
DexProgramClass holder = fields.iterator().next().getHolder();
- // If the class is kept it could be instantiated directly, in which case all default field
- // values could be live.
- if (appView.getKeepInfo(holder).isPinned(appView.options())) {
- fields.forEach(liveDefaultValueConsumer);
- return true;
- }
if (holder.isFinal() || !appView.appInfo().isInstantiatedIndirectly(holder)) {
// When the class is not explicitly marked final, the class could in principle have
// injected subclasses if it is pinned. However, none of the fields are pinned, so we
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/LiveDefaultFieldValueOfReflectivelyInstantiatedClassTest.java b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/LiveDefaultFieldValueOfReflectivelyInstantiatedClassTest.java
deleted file mode 100644
index 358227d..0000000
--- a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/LiveDefaultFieldValueOfReflectivelyInstantiatedClassTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright (c) 2024, 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.ir.optimize.membervaluepropagation;
-
-import com.android.tools.r8.NeverInline;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.TestParametersCollection;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class LiveDefaultFieldValueOfReflectivelyInstantiatedClassTest extends TestBase {
-
- @Parameter(0)
- public TestParameters parameters;
-
- @Parameters(name = "{0}")
- public static TestParametersCollection data() {
- return getTestParameters().withAllRuntimesAndApiLevels().build();
- }
-
- @Test
- public void test() throws Exception {
- testForR8(parameters.getBackend())
- .addInnerClasses(getClass())
- .addKeepMainRule(Main.class)
- .addKeepClassAndDefaultConstructor(BooleanBox.class)
- .enableInliningAnnotations()
- .setMinApi(parameters)
- .run(parameters.getRuntime(), Main.class)
- .assertSuccessWithOutputLines("false");
- }
-
- static class Main {
-
- public static void main(String[] args) throws Exception {
- Class<?> clazz = System.currentTimeMillis() > 0 ? BooleanBox.class : Object.class;
- BooleanBox box = (BooleanBox) clazz.getDeclaredConstructor().newInstance();
- System.out.println(box.value);
- box.set();
- }
- }
-
- static class BooleanBox {
-
- boolean value;
-
- BooleanBox() {}
-
- @NeverInline
- void set() {
- value = true;
- }
- }
-}