Revert "Account for pruned super signature in vertical class merger"
This reverts commit acedb86168d08f580200ab295da49cf5de759de1.
Revert "Clear generic signatures for horizontally merged targets"
This reverts commit f78fb4d9a46b782bca05e88933b6e9561e78a02c.
Revert "Add enableTestAssertions to compiledump when running with assertions"
This reverts commit 98051f5f1d2eaa568b9fc18d313b60817ebd8993.
Bug: 191349005
Bug: 191327911
Change-Id: I42a350582494d82522246b6d58a799f73259a3a5
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 2143c36..ceef6c2 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -812,16 +812,6 @@
options.syntheticProguardRulesConsumer.accept(synthesizedProguardRules);
}
- NamingLens prefixRewritingNamingLens =
- PrefixRewritingNamingLens.createPrefixRewritingNamingLens(appView, namingLens);
-
- timing.begin("MinifyKotlinMetadata");
- new KotlinMetadataRewriter(appView, prefixRewritingNamingLens).runForR8(executorService);
- timing.end();
-
- new GenericSignatureRewriter(appView, prefixRewritingNamingLens)
- .run(appView.appInfo().classes(), executorService);
-
assert appView.checkForTesting(
() ->
!options.isShrinking()
@@ -832,6 +822,16 @@
.isValid())
: "Could not validate generic signatures";
+ NamingLens prefixRewritingNamingLens =
+ PrefixRewritingNamingLens.createPrefixRewritingNamingLens(appView, namingLens);
+
+ timing.begin("MinifyKotlinMetadata");
+ new KotlinMetadataRewriter(appView, prefixRewritingNamingLens).runForR8(executorService);
+ timing.end();
+
+ new GenericSignatureRewriter(appView, prefixRewritingNamingLens)
+ .run(appView.appInfo().classes(), executorService);
+
new DesugaredLibraryKeepRuleGenerator(appView, prefixRewritingNamingLens)
.runIfNecessary(timing);
diff --git a/src/main/java/com/android/tools/r8/graph/GenericSignature.java b/src/main/java/com/android/tools/r8/graph/GenericSignature.java
index 76e31b9..d7d048a 100644
--- a/src/main/java/com/android/tools/r8/graph/GenericSignature.java
+++ b/src/main/java/com/android/tools/r8/graph/GenericSignature.java
@@ -335,11 +335,6 @@
return this;
}
- public ClassSignatureBuilder addInterface(ClassTypeSignature iface) {
- superInterfaceSignatures.add(iface);
- return this;
- }
-
public ClassSignature build() {
ClassSignature classSignature =
new ClassSignature(formalTypeParameters, superClassSignature, superInterfaceSignatures);
diff --git a/src/main/java/com/android/tools/r8/graph/GenericSignatureContextBuilder.java b/src/main/java/com/android/tools/r8/graph/GenericSignatureContextBuilder.java
index a965c76..d3a67a2 100644
--- a/src/main/java/com/android/tools/r8/graph/GenericSignatureContextBuilder.java
+++ b/src/main/java/com/android/tools/r8/graph/GenericSignatureContextBuilder.java
@@ -268,7 +268,7 @@
}
}
- public static boolean hasGenericTypeVariables(
+ public boolean hasGenericTypeVariables(
AppView<?> appView, DexType type, Predicate<DexType> wasPruned) {
if (wasPruned.test(type)) {
return false;
diff --git a/src/main/java/com/android/tools/r8/graph/GenericSignatureTypeRewriter.java b/src/main/java/com/android/tools/r8/graph/GenericSignatureTypeRewriter.java
index 27f26b9..332aa8d 100644
--- a/src/main/java/com/android/tools/r8/graph/GenericSignatureTypeRewriter.java
+++ b/src/main/java/com/android/tools/r8/graph/GenericSignatureTypeRewriter.java
@@ -29,31 +29,26 @@
private final DexProgramClass context;
private final ClassTypeSignature objectTypeSignature;
- private final Predicate<DexType> hasGenericTypeVariables;
- public GenericSignatureTypeRewriter(
- AppView<?> appView, DexProgramClass context, Predicate<DexType> hasGenericTypeVariables) {
+ public GenericSignatureTypeRewriter(AppView<?> appView, DexProgramClass context) {
this(
appView.dexItemFactory(),
appView.appInfo().hasLiveness()
? appView.appInfo().withLiveness()::wasPruned
: alwaysFalse(),
appView.graphLens()::lookupType,
- context,
- hasGenericTypeVariables);
+ context);
}
public GenericSignatureTypeRewriter(
DexItemFactory factory,
Predicate<DexType> wasPruned,
Function<DexType, DexType> lookupType,
- DexProgramClass context,
- Predicate<DexType> hasGenericTypeVariables) {
+ DexProgramClass context) {
this.factory = factory;
this.wasPruned = wasPruned;
this.lookupType = lookupType;
this.context = context;
- this.hasGenericTypeVariables = hasGenericTypeVariables;
objectTypeSignature = new ClassTypeSignature(factory.objectType, getEmptyTypeArguments());
}
@@ -143,11 +138,10 @@
@Override
public ClassTypeSignature visitSuperClass(ClassTypeSignature classTypeSignature) {
- if (context.superType == factory.objectType) {
- return objectTypeSignature;
- }
ClassTypeSignature rewritten = classTypeSignature.visit(this);
- return rewritten == null ? objectTypeSignature : rewritten;
+ return rewritten == null || rewritten.type() == context.type
+ ? objectTypeSignature
+ : rewritten;
}
@Override
@@ -249,9 +243,6 @@
if (typeArguments.isEmpty()) {
return typeArguments;
}
- if (!hasGenericTypeVariables.test(type)) {
- return getEmptyTypeArguments();
- }
return ListUtils.mapOrElse(
typeArguments,
fieldTypeSignature -> {
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
index f833fed..fc4e3e9 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/ClassMerger.java
@@ -24,7 +24,6 @@
import com.android.tools.r8.graph.GenericSignature.MethodTypeSignature;
import com.android.tools.r8.graph.MethodAccessFlags;
import com.android.tools.r8.graph.ParameterAnnotationsList;
-import com.android.tools.r8.graph.ProgramMember;
import com.android.tools.r8.graph.ProgramMethod;
import com.android.tools.r8.horizontalclassmerging.HorizontalClassMerger.Mode;
import com.android.tools.r8.horizontalclassmerging.code.ClassInitializerMerger;
@@ -326,8 +325,6 @@
mergeInterfaces();
mergeFields();
mergeMethods(syntheticArgumentClass, syntheticInitializerConverterBuilder);
- group.getTarget().clearClassSignature();
- group.getTarget().forEachProgramMember(ProgramMember::clearGenericSignature);
}
public static class Builder {
diff --git a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
index 99067fe..16b6508 100644
--- a/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
+++ b/src/main/java/com/android/tools/r8/naming/signature/GenericSignatureRewriter.java
@@ -50,11 +50,11 @@
// ClassNameMinifier.
Predicate<DexType> wasPruned =
appView.hasLiveness() ? appView.withLiveness().appInfo()::wasPruned : alwaysFalse();
- Predicate<DexType> hasGenericTypeVariables =
- type -> GenericSignatureContextBuilder.hasGenericTypeVariables(appView, type, wasPruned);
BiPredicate<DexType, DexType> hasPrunedRelationship =
(enclosing, enclosed) ->
contextBuilder.hasPrunedRelationship(appView, enclosing, enclosed, wasPruned);
+ Predicate<DexType> hasGenericTypeVariables =
+ type -> contextBuilder.hasGenericTypeVariables(appView, type, wasPruned);
ThreadUtils.processItems(
classes,
clazz -> {
@@ -68,7 +68,7 @@
hasGenericTypeVariables)
: null;
GenericSignatureTypeRewriter genericSignatureTypeRewriter =
- new GenericSignatureTypeRewriter(appView, clazz, hasGenericTypeVariables);
+ new GenericSignatureTypeRewriter(appView, clazz);
clazz.setClassSignature(
genericSignatureTypeRewriter.rewrite(
classArgumentApplier != null
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index dba31e8..be26efa 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -1212,11 +1212,7 @@
} else {
builder.addInterfaces(targetSignature.superInterfaceSignatures());
}
- if (rewrittenSource.hasSignature()) {
- builder.addInterfaces(rewrittenSource.superInterfaceSignatures());
- } else {
- source.interfaces.forEach(iface -> builder.addInterface(new ClassTypeSignature(iface)));
- }
+ builder.addInterfaces(rewrittenSource.superInterfaceSignatures());
target.setClassSignature(builder.build());
// Go through all type-variable references for members and update them.
diff --git a/src/test/java/com/android/tools/r8/graph/genericsignature/ClassSignatureTest.java b/src/test/java/com/android/tools/r8/graph/genericsignature/ClassSignatureTest.java
index dd835a2..75306f7 100644
--- a/src/test/java/com/android/tools/r8/graph/genericsignature/ClassSignatureTest.java
+++ b/src/test/java/com/android/tools/r8/graph/genericsignature/ClassSignatureTest.java
@@ -6,7 +6,6 @@
import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
import static com.google.common.base.Predicates.alwaysFalse;
-import static com.google.common.base.Predicates.alwaysTrue;
import static org.hamcrest.CoreMatchers.containsString;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
@@ -180,8 +179,7 @@
factory,
dexType -> dexType.toDescriptorString().equals("Lj$/util/Spliterator$OfPrimitive;"),
Function.identity(),
- null,
- alwaysTrue());
+ null);
MethodTypeSignature rewritten = rewriter.rewrite(parsedMethodSignature);
assertNotNull(rewritten);
assertTrue(rewritten.hasSignature());
diff --git a/src/test/java/com/android/tools/r8/graph/genericsignature/FieldSignatureTest.java b/src/test/java/com/android/tools/r8/graph/genericsignature/FieldSignatureTest.java
index aafeadf..c17ea6b 100644
--- a/src/test/java/com/android/tools/r8/graph/genericsignature/FieldSignatureTest.java
+++ b/src/test/java/com/android/tools/r8/graph/genericsignature/FieldSignatureTest.java
@@ -122,8 +122,7 @@
"A", "Lfoo/bar/Baz;", Origin.unknown(), factory, new Reporter());
assertTrue(parsed.hasSignature());
GenericSignatureTypeRewriter rewriter =
- new GenericSignatureTypeRewriter(
- factory, alwaysTrue(), Function.identity(), null, alwaysTrue());
+ new GenericSignatureTypeRewriter(factory, alwaysTrue(), Function.identity(), null);
FieldTypeSignature rewrittenType = rewriter.rewrite(parsed);
assertNotNull(rewrittenType);
assertTrue(rewrittenType.hasNoSignature());
diff --git a/tools/compiledump.py b/tools/compiledump.py
index 83bc2aa..46b09b8 100755
--- a/tools/compiledump.py
+++ b/tools/compiledump.py
@@ -300,7 +300,6 @@
cmd.append('-Xmx' + args.xmx)
if args.ea:
cmd.append('-ea')
- cmd.append('-Dcom.android.tools.r8.enableTestAssertions=1')
if args.print_times:
cmd.append('-Dcom.android.tools.r8.printtimes=1')
if hasattr(args, 'properties'):