Revert "Make merging more resilient to backported names from old versions of R8"
This reverts commit 048963c785b73af00b866cc9b99e3e952e023c79.
Reason for revert: breaks old vms
Change-Id: I3b698c036bb3f5c406515f1d8f580a482f80208a
diff --git a/src/main/java/com/android/tools/r8/graph/DexType.java b/src/main/java/com/android/tools/r8/graph/DexType.java
index bbed9bc..cc39610 100644
--- a/src/main/java/com/android/tools/r8/graph/DexType.java
+++ b/src/main/java/com/android/tools/r8/graph/DexType.java
@@ -24,19 +24,13 @@
import com.android.tools.r8.utils.InternalOptions.OutlineOptions;
import com.android.tools.r8.utils.Pair;
import com.google.common.base.Predicates;
-import com.google.common.collect.ImmutableList;
import java.util.Arrays;
-import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
public class DexType extends DexReference implements PresortedComparable<DexType> {
public static final DexType[] EMPTY_ARRAY = {};
- // Bundletool is merging classes that may originate from a build with an old version of R8.
- // Allow merging of classes that use names from older versions of R8.
- private static List<String> OLD_SYNTHESIZED_NAMES = ImmutableList.of("$r8$java8methods$utility");
-
public final DexString descriptor;
private String toStringCache = null;
@@ -270,17 +264,7 @@
|| name.contains(TwrCloseResourceRewriter.UTILITY_CLASS_NAME)
|| name.contains(NestBasedAccessDesugaring.NEST_CONSTRUCTOR_NAME)
|| name.contains(BackportedMethodRewriter.UTILITY_CLASS_NAME_PREFIX)
- || name.contains(ServiceLoaderRewriter.SERVICE_LOADER_CLASS_NAME)
- || oldSynthesizedName(name);
- }
-
- private boolean oldSynthesizedName(String name) {
- for (String synthesizedPrefix : OLD_SYNTHESIZED_NAMES) {
- if (name.contains(synthesizedPrefix)) {
- return true;
- }
- }
- return false;
+ || name.contains(ServiceLoaderRewriter.SERVICE_LOADER_CLASS_NAME);
}
public boolean isProgramType(DexDefinitionSupplier definitions) {
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
index 8f33a5e..fa68de4 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/BackportedMethodRewriter.java
@@ -62,8 +62,6 @@
public final class BackportedMethodRewriter {
- // Don't change this name, at least not without adding special-casing in DexType to support
- // merging old dex code in Bundletool.
public static final String UTILITY_CLASS_NAME_PREFIX = "$r8$backportedMethods$utility";
private final AppView<?> appView;
diff --git a/src/main/java/com/android/tools/r8/utils/ProgramClassCollection.java b/src/main/java/com/android/tools/r8/utils/ProgramClassCollection.java
index 85dfd44..44da91c 100644
--- a/src/main/java/com/android/tools/r8/utils/ProgramClassCollection.java
+++ b/src/main/java/com/android/tools/r8/utils/ProgramClassCollection.java
@@ -10,7 +10,12 @@
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexProgramClass;
import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.ir.desugar.BackportedMethodRewriter;
import com.android.tools.r8.ir.desugar.DesugaredLibraryWrapperSynthesizer;
+import com.android.tools.r8.ir.desugar.InterfaceMethodRewriter;
+import com.android.tools.r8.ir.desugar.LambdaRewriter;
+import com.android.tools.r8.ir.desugar.NestBasedAccessDesugaring;
+import com.android.tools.r8.ir.desugar.TwrCloseResourceRewriter;
import com.android.tools.r8.references.Reference;
import com.google.common.collect.ImmutableList;
import java.util.List;
@@ -85,7 +90,11 @@
private static DexProgramClass mergeClasses(
Reporter reporter, DexProgramClass a, DexProgramClass b) {
- if (a.type.isD8R8SynthesizedClassType()) {
+ if (LambdaRewriter.hasLambdaClassPrefix(a.type)
+ || BackportedMethodRewriter.hasRewrittenMethodPrefix(a.type)
+ || InterfaceMethodRewriter.hasDispatchClassSuffix(a.type)
+ || NestBasedAccessDesugaring.isNestConstructor(a.type)
+ || TwrCloseResourceRewriter.isUtilityClassDescriptor(a.type)) {
assert assertEqualClasses(a, b);
return a;
}
diff --git a/src/test/java/com/android/tools/r8/desugar/BackportedMethodMergeTest.java b/src/test/java/com/android/tools/r8/desugar/BackportedMethodMergeTest.java
index f71139f..44f32ee 100644
--- a/src/test/java/com/android/tools/r8/desugar/BackportedMethodMergeTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/BackportedMethodMergeTest.java
@@ -4,14 +4,9 @@
package com.android.tools.r8.desugar;
-import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.TestBase;
-import com.android.tools.r8.graph.ClassAccessFlags;
-import com.android.tools.r8.transformers.ClassTransformer;
import com.android.tools.r8.utils.AndroidApiLevel;
-import java.io.IOException;
import java.nio.file.Path;
-import java.util.concurrent.ExecutionException;
import org.junit.Test;
public class BackportedMethodMergeTest extends TestBase {
@@ -45,61 +40,6 @@
.assertSuccessWithOutput(jvmOutput);
}
- @Test
- public void testMergeOldPrefix()
- throws IOException, CompilationFailedException, ExecutionException {
- byte[] transform = transformer($r8$java8methods$utility_MergeInputWithOldBackportedPrefix.class)
- .addClassTransformer(new ClassTransformer() {
- @Override
- public void visit(int version, int access, String name, String signature,
- String superName, String[] interfaces) {
- ClassAccessFlags accessFlags = ClassAccessFlags.fromCfAccessFlags(access);
- accessFlags.setSynthetic();
- super.visit(version, accessFlags.getAsCfAccessFlags(),
- name, signature, superName, interfaces);
- }
- }).transform();
-
- Path zip1 = temp.newFile("first.zip").toPath();
- Path zip2 = temp.newFile("second.zip").toPath();
- testForD8()
- .setMinApi(AndroidApiLevel.L)
- .addProgramClasses(MergeRunWithOldBackportedPrefix.class)
- .addProgramClassFileData(transform)
- .compile()
- .assertNoMessages()
- .writeToZip(zip1);
- testForD8()
- .setMinApi(AndroidApiLevel.L)
- .addProgramClassFileData(transform)
- .compile()
- .assertNoMessages()
- .writeToZip(zip2);
- testForD8()
- .addProgramFiles(zip1, zip2)
- .setMinApi(AndroidApiLevel.L)
- .compile()
- .assertNoMessages()
- .run(MergeRunWithOldBackportedPrefix.class)
- .assertSuccessWithOutputLines("foobar");
- }
-
-
- static class $r8$java8methods$utility_MergeInputWithOldBackportedPrefix {
- public void foo() {
- System.out.println("foobar");
- }
-
- }
-
- static class MergeRunWithOldBackportedPrefix {
- public static void main(String[] args) {
- $r8$java8methods$utility_MergeInputWithOldBackportedPrefix a =
- new $r8$java8methods$utility_MergeInputWithOldBackportedPrefix();
- a.foo();
- }
- }
-
static class MergeInputA {
public void foo() {
System.out.println(Integer.hashCode(42));