Revert "Add new profile inspection to compile results"
Revert submission 75267
Reason for revert:failing tests, see https://storage.googleapis.com/r8-test-results/linux-jdk8_63bfbbf1f83e9100c9c0cfbb8583a639da39580c/test/index.html (and other bots)
Reverted changes: /q/submissionid:75267
Change-Id: I309e3fd14c94251aed61b9aa4905cbe32d3eb6ef
diff --git a/src/test/java/com/android/tools/r8/D8TestBuilder.java b/src/test/java/com/android/tools/r8/D8TestBuilder.java
index c8c21fa..de0565f 100644
--- a/src/test/java/com/android/tools/r8/D8TestBuilder.java
+++ b/src/test/java/com/android/tools/r8/D8TestBuilder.java
@@ -9,16 +9,12 @@
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.profile.art.ArtProfileConsumer;
import com.android.tools.r8.profile.art.ArtProfileProvider;
-import com.android.tools.r8.profile.art.model.ExternalArtProfile;
-import com.android.tools.r8.profile.art.utils.ArtProfileTestingUtils;
import com.android.tools.r8.startup.StartupProfileProvider;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.InternalOptions;
import java.nio.file.Path;
-import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
-import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;
@@ -36,7 +32,6 @@
private StringBuilder proguardMapOutputBuilder = null;
private boolean enableMissingLibraryApiModeling = true;
- private List<ExternalArtProfile> residualArtProfiles = new ArrayList<>();
@Override
public boolean isD8TestBuilder() {
@@ -139,16 +134,6 @@
return self();
}
- public D8TestBuilder addArtProfileForRewriting(ArtProfileProvider artProfileProvider) {
- return addArtProfileForRewriting(
- artProfileProvider,
- ArtProfileTestingUtils.createResidualArtProfileConsumer(residualArtProfiles::add));
- }
-
- public D8TestBuilder addArtProfileForRewriting(ExternalArtProfile artProfile) {
- return addArtProfileForRewriting(ArtProfileTestingUtils.createArtProfileProvider(artProfile));
- }
-
public D8TestBuilder addArtProfileForRewriting(
ArtProfileProvider artProfileProvider, ArtProfileConsumer residualArtProfileConsumer) {
builder.addArtProfileForRewriting(artProfileProvider, residualArtProfileConsumer);
diff --git a/src/test/java/com/android/tools/r8/R8TestBuilder.java b/src/test/java/com/android/tools/r8/R8TestBuilder.java
index 34f8a0b..a844c1f 100644
--- a/src/test/java/com/android/tools/r8/R8TestBuilder.java
+++ b/src/test/java/com/android/tools/r8/R8TestBuilder.java
@@ -17,8 +17,6 @@
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.profile.art.ArtProfileConsumer;
import com.android.tools.r8.profile.art.ArtProfileProvider;
-import com.android.tools.r8.profile.art.model.ExternalArtProfile;
-import com.android.tools.r8.profile.art.utils.ArtProfileTestingUtils;
import com.android.tools.r8.shaking.CheckEnumUnboxedRule;
import com.android.tools.r8.shaking.CollectingGraphConsumer;
import com.android.tools.r8.shaking.KeepUnusedReturnValueRule;
@@ -70,7 +68,6 @@
private boolean allowUnusedProguardConfigurationRules = false;
private boolean enableMissingLibraryApiModeling = true;
private CollectingGraphConsumer graphConsumer = null;
- private List<ExternalArtProfile> residualArtProfiles = new ArrayList<>();
private List<String> keepRules = new ArrayList<>();
private List<Path> mainDexRulesFiles = new ArrayList<>();
private List<String> applyMappingMaps = new ArrayList<>();
@@ -161,8 +158,7 @@
createDefaultProguardMapConsumer ? proguardMapBuilder.toString() : null,
graphConsumer,
getMinApiLevel(),
- features,
- residualArtProfiles);
+ features);
switch (allowedDiagnosticMessages) {
case ALL:
compileResult.getDiagnosticMessages().assertAllDiagnosticsMatch(new IsAnything<>());
@@ -786,16 +782,6 @@
return self();
}
- public T addArtProfileForRewriting(ArtProfileProvider artProfileProvider) {
- return addArtProfileForRewriting(
- artProfileProvider,
- ArtProfileTestingUtils.createResidualArtProfileConsumer(residualArtProfiles::add));
- }
-
- public T addArtProfileForRewriting(ExternalArtProfile artProfile) {
- return addArtProfileForRewriting(ArtProfileTestingUtils.createArtProfileProvider(artProfile));
- }
-
public T addArtProfileForRewriting(
ArtProfileProvider artProfileProvider, ArtProfileConsumer residualArtProfileConsumer) {
builder.addArtProfileForRewriting(artProfileProvider, residualArtProfileConsumer);
diff --git a/src/test/java/com/android/tools/r8/R8TestCompileResult.java b/src/test/java/com/android/tools/r8/R8TestCompileResult.java
index b3b6e31..688ab43 100644
--- a/src/test/java/com/android/tools/r8/R8TestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/R8TestCompileResult.java
@@ -9,14 +9,11 @@
import com.android.tools.r8.ToolHelper.ProcessResult;
import com.android.tools.r8.dexsplitter.SplitterTestBase.SplitRunner;
-import com.android.tools.r8.profile.art.model.ExternalArtProfile;
-import com.android.tools.r8.profile.art.utils.ArtProfileInspector;
import com.android.tools.r8.shaking.CollectingGraphConsumer;
import com.android.tools.r8.shaking.ProguardConfiguration;
import com.android.tools.r8.shaking.ProguardConfigurationRule;
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.FileUtils;
-import com.android.tools.r8.utils.ThrowingBiConsumer;
import com.android.tools.r8.utils.ThrowingConsumer;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -25,7 +22,6 @@
import java.nio.file.Path;
import java.util.List;
import java.util.Set;
-import java.util.concurrent.ExecutionException;
import java.util.function.Consumer;
public class R8TestCompileResult extends TestCompileResult<R8TestCompileResult, R8TestRunResult> {
@@ -35,7 +31,6 @@
private final String proguardMap;
private final CollectingGraphConsumer graphConsumer;
private final List<Path> features;
- private final List<ExternalArtProfile> residualArtProfiles;
R8TestCompileResult(
TestState state,
@@ -47,15 +42,13 @@
String proguardMap,
CollectingGraphConsumer graphConsumer,
int minApiLevel,
- List<Path> features,
- List<ExternalArtProfile> residualArtProfiles) {
+ List<Path> features) {
super(state, app, minApiLevel, outputMode, libraryDesugaringTestConfiguration);
this.proguardConfiguration = proguardConfiguration;
this.syntheticProguardRules = syntheticProguardRules;
this.proguardMap = proguardMap;
this.graphConsumer = graphConsumer;
this.features = features;
- this.residualArtProfiles = residualArtProfiles;
}
@Override
@@ -131,19 +124,6 @@
return self();
}
- public <E extends Throwable> R8TestCompileResult inspectResidualArtProfile(
- ThrowingConsumer<ArtProfileInspector, E> consumer) throws E, IOException, ExecutionException {
- return inspectResidualArtProfile(
- (rewrittenArtProfile, inspector) -> consumer.accept(rewrittenArtProfile));
- }
-
- public <E extends Throwable> R8TestCompileResult inspectResidualArtProfile(
- ThrowingBiConsumer<ArtProfileInspector, CodeInspector, E> consumer) throws E, IOException {
- assertEquals(1, residualArtProfiles.size());
- consumer.accept(new ArtProfileInspector(residualArtProfiles.iterator().next()), inspector());
- return self();
- }
-
public GraphInspector graphInspector() throws IOException {
assert graphConsumer != null;
return new GraphInspector(graphConsumer, inspector());
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
index ed81c32..4144aaa 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestBuilder.java
@@ -27,8 +27,6 @@
import com.android.tools.r8.profile.art.ArtProfileConsumer;
import com.android.tools.r8.profile.art.ArtProfileForRewriting;
import com.android.tools.r8.profile.art.ArtProfileProvider;
-import com.android.tools.r8.profile.art.model.ExternalArtProfile;
-import com.android.tools.r8.profile.art.utils.ArtProfileTestingUtils;
import com.android.tools.r8.tracereferences.TraceReferences;
import com.android.tools.r8.utils.ConsumerUtils;
import com.android.tools.r8.utils.FileUtils;
@@ -60,7 +58,6 @@
private CustomLibrarySpecification customLibrarySpecification = null;
private TestingKeepRuleConsumer keepRuleConsumer = null;
- private List<ExternalArtProfile> l8ResidualArtProfiles = new ArrayList<>();
public DesugaredLibraryTestBuilder(
T test,
@@ -381,8 +378,7 @@
libraryDesugaringSpecification,
compilationSpecification,
customLibCompile,
- l8Compile,
- l8ResidualArtProfiles);
+ l8Compile);
}
private D8TestCompileResult compileCustomLib() throws CompilationFailedException {
@@ -505,18 +501,7 @@
return this;
}
- public DesugaredLibraryTestBuilder<T> addL8ArtProfileForRewriting(
- ArtProfileProvider artProfileProvider) {
- return addL8ArtProfileForRewriting(
- artProfileProvider,
- ArtProfileTestingUtils.createResidualArtProfileConsumer(l8ResidualArtProfiles::add));
- }
-
- public DesugaredLibraryTestBuilder<T> addL8ArtProfileForRewriting(ExternalArtProfile artProfile) {
- return addL8ArtProfileForRewriting(ArtProfileTestingUtils.createArtProfileProvider(artProfile));
- }
-
- public DesugaredLibraryTestBuilder<T> addL8ArtProfileForRewriting(
+ public DesugaredLibraryTestBuilder<?> addL8ArtProfileForRewriting(
ArtProfileProvider artProfileProvider, ArtProfileConsumer residualArtProfileConsumer) {
l8ArtProfilesForRewriting.add(
new ArtProfileForRewriting(artProfileProvider, residualArtProfileConsumer));
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java
index d49f2ef..3172876 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/test/DesugaredLibraryTestCompileResult.java
@@ -4,8 +4,6 @@
package com.android.tools.r8.desugar.desugaredlibrary.test;
-import static org.junit.Assert.assertEquals;
-
import com.android.tools.r8.CompilationFailedException;
import com.android.tools.r8.D8TestCompileResult;
import com.android.tools.r8.L8TestCompileResult;
@@ -15,9 +13,6 @@
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestRuntime;
import com.android.tools.r8.desugar.desugaredlibrary.DesugaredLibraryTestBase;
-import com.android.tools.r8.profile.art.model.ExternalArtProfile;
-import com.android.tools.r8.profile.art.utils.ArtProfileInspector;
-import com.android.tools.r8.utils.ThrowingBiConsumer;
import com.android.tools.r8.utils.ThrowingConsumer;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import java.io.IOException;
@@ -35,7 +30,6 @@
private final CompilationSpecification compilationSpecification;
private final D8TestCompileResult customLibCompile;
private final L8TestCompileResult l8Compile;
- private final List<ExternalArtProfile> l8ResidualArtProfiles;
// In case of Cf2Cf desugaring the run on dex, the compileResult is the Cf desugaring result
// while the runnableCompiledResult is the dexed compiledResult used to run on dex.
private final TestCompileResult<?, ? extends SingleTestRunResult<?>> runnableCompiledResult;
@@ -47,8 +41,7 @@
LibraryDesugaringSpecification libraryDesugaringSpecification,
CompilationSpecification compilationSpecification,
D8TestCompileResult customLibCompile,
- L8TestCompileResult l8Compile,
- List<ExternalArtProfile> l8ResidualArtProfiles)
+ L8TestCompileResult l8Compile)
throws CompilationFailedException, IOException {
this.test = test;
this.compileResult = compileResult;
@@ -57,7 +50,6 @@
this.compilationSpecification = compilationSpecification;
this.customLibCompile = customLibCompile;
this.l8Compile = l8Compile;
- this.l8ResidualArtProfiles = l8ResidualArtProfiles;
this.runnableCompiledResult = computeRunnableCompiledResult();
}
@@ -74,20 +66,6 @@
return this;
}
- public <E extends Throwable> DesugaredLibraryTestCompileResult<T> inspectL8ResidualArtProfile(
- ThrowingConsumer<ArtProfileInspector, E> consumer) throws E, IOException, ExecutionException {
- return inspectL8ResidualArtProfile(
- (rewrittenArtProfile, inspector) -> consumer.accept(rewrittenArtProfile));
- }
-
- public <E extends Throwable> DesugaredLibraryTestCompileResult<T> inspectL8ResidualArtProfile(
- ThrowingBiConsumer<ArtProfileInspector, CodeInspector, E> consumer) throws E, IOException {
- assertEquals(1, l8ResidualArtProfiles.size());
- consumer.accept(
- new ArtProfileInspector(l8ResidualArtProfiles.iterator().next()), l8Inspector());
- return this;
- }
-
public <E extends Throwable> DesugaredLibraryTestCompileResult<T> inspect(
ThrowingConsumer<CodeInspector, E> consumer) throws IOException, E {
compileResult.inspect(consumer);
diff --git a/src/test/java/com/android/tools/r8/profile/art/ArtProfileCollisionAfterClassMergingRewritingTest.java b/src/test/java/com/android/tools/r8/profile/art/ArtProfileCollisionAfterClassMergingRewritingTest.java
index e192b41..922cae7 100644
--- a/src/test/java/com/android/tools/r8/profile/art/ArtProfileCollisionAfterClassMergingRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/profile/art/ArtProfileCollisionAfterClassMergingRewritingTest.java
@@ -6,6 +6,7 @@
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndRenamed;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
import com.android.tools.r8.NeverInline;
import com.android.tools.r8.TestBase;
@@ -14,11 +15,12 @@
import com.android.tools.r8.profile.art.model.ExternalArtProfile;
import com.android.tools.r8.profile.art.model.ExternalArtProfileClassRule;
import com.android.tools.r8.profile.art.model.ExternalArtProfileMethodRule;
-import com.android.tools.r8.profile.art.utils.ArtProfileInspector;
+import com.android.tools.r8.profile.art.utils.ArtProfileTestingUtils;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.Box;
import com.android.tools.r8.utils.MethodReferenceUtils;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -54,17 +56,21 @@
@Test
public void test() throws Exception {
+ Box<ExternalArtProfile> residualArtProfile = new Box<>();
testForR8(Backend.DEX)
.addInnerClasses(getClass())
.addKeepMainRule(Main.class)
.addHorizontallyMergedClassesInspector(
inspector ->
inspector.assertMergedInto(Foo.class, Bar.class).assertNoOtherClassesMerged())
- .addArtProfileForRewriting(getArtProfile())
+ .apply(
+ testBuilder ->
+ ArtProfileTestingUtils.addArtProfileForRewriting(
+ getArtProfile(), residualArtProfile::set, testBuilder))
.enableInliningAnnotations()
.setMinApi(AndroidApiLevel.LATEST)
.compile()
- .inspectResidualArtProfile(this::inspect);
+ .inspect(inspector -> inspect(inspector, residualArtProfile.get()));
}
public ExternalArtProfile getArtProfile() {
@@ -105,8 +111,8 @@
.build();
}
- private void inspect(ArtProfileInspector profileInspector, CodeInspector inspector) {
- profileInspector.assertEqualTo(getExpectedResidualArtProfile(inspector));
+ private void inspect(CodeInspector inspector, ExternalArtProfile residualArtProfile) {
+ assertEquals(getExpectedResidualArtProfile(inspector), residualArtProfile);
}
static class Main {
diff --git a/src/test/java/com/android/tools/r8/profile/art/ArtProfileRewritingTest.java b/src/test/java/com/android/tools/r8/profile/art/ArtProfileRewritingTest.java
index c68b02f..c5fb462 100644
--- a/src/test/java/com/android/tools/r8/profile/art/ArtProfileRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/profile/art/ArtProfileRewritingTest.java
@@ -6,6 +6,7 @@
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresentAndRenamed;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
import com.android.tools.r8.NeverInline;
import com.android.tools.r8.TestBase;
@@ -14,11 +15,12 @@
import com.android.tools.r8.profile.art.model.ExternalArtProfile;
import com.android.tools.r8.profile.art.model.ExternalArtProfileClassRule;
import com.android.tools.r8.profile.art.model.ExternalArtProfileMethodRule;
-import com.android.tools.r8.profile.art.utils.ArtProfileInspector;
+import com.android.tools.r8.profile.art.utils.ArtProfileTestingUtils;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.utils.AndroidApiLevel;
+import com.android.tools.r8.utils.Box;
import com.android.tools.r8.utils.MethodReferenceUtils;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -51,14 +53,18 @@
@Test
public void test() throws Exception {
+ Box<ExternalArtProfile> residualArtProfile = new Box<>();
testForR8(Backend.DEX)
.addInnerClasses(getClass())
.addKeepMainRule(Main.class)
- .addArtProfileForRewriting(getArtProfile())
+ .apply(
+ testBuilder ->
+ ArtProfileTestingUtils.addArtProfileForRewriting(
+ getArtProfile(), residualArtProfile::set, testBuilder))
.enableInliningAnnotations()
.setMinApi(AndroidApiLevel.LATEST)
.compile()
- .inspectResidualArtProfile(this::inspect);
+ .inspect(inspector -> inspect(inspector, residualArtProfile.get()));
}
private ExternalArtProfile getArtProfile() {
@@ -103,8 +109,8 @@
.build();
}
- private void inspect(ArtProfileInspector profileInspector, CodeInspector inspector) {
- profileInspector.assertEqualTo(getExpectedResidualArtProfile(inspector));
+ private void inspect(CodeInspector inspector, ExternalArtProfile residualArtProfile) {
+ assertEquals(getExpectedResidualArtProfile(inspector), residualArtProfile);
}
static class Main {
diff --git a/src/test/java/com/android/tools/r8/profile/art/DesugaredLibraryArtProfileRewritingTest.java b/src/test/java/com/android/tools/r8/profile/art/DesugaredLibraryArtProfileRewritingTest.java
index 1a4bfda..52e0beb 100644
--- a/src/test/java/com/android/tools/r8/profile/art/DesugaredLibraryArtProfileRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/profile/art/DesugaredLibraryArtProfileRewritingTest.java
@@ -18,9 +18,10 @@
import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
import com.android.tools.r8.profile.art.model.ExternalArtProfile;
import com.android.tools.r8.profile.art.model.ExternalArtProfileMethodRule;
-import com.android.tools.r8.profile.art.utils.ArtProfileInspector;
+import com.android.tools.r8.profile.art.utils.ArtProfileTestingUtils;
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.references.Reference;
+import com.android.tools.r8.utils.Box;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
import com.android.tools.r8.utils.codeinspector.MethodSubject;
@@ -58,12 +59,16 @@
@Test
public void test() throws Throwable {
Assume.assumeTrue(libraryDesugaringSpecification.hasEmulatedInterfaceDesugaring(parameters));
+ Box<ExternalArtProfile> residualArtProfile = new Box<>();
testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)
.addInnerClasses(getClass())
.addKeepMainRule(Main.class)
- .addL8ArtProfileForRewriting(getArtProfile())
+ .apply(
+ testBuilder ->
+ ArtProfileTestingUtils.addArtProfileForRewriting(
+ getArtProfile(), residualArtProfile::set, testBuilder))
.compile()
- .inspectL8ResidualArtProfile(this::inspect)
+ .inspectL8(inspector -> inspect(inspector, residualArtProfile.get()))
.run(parameters.getRuntime(), Main.class)
.assertSuccessWithOutputLines("0");
}
@@ -95,7 +100,7 @@
.build();
}
- private void inspect(ArtProfileInspector profileInspector, CodeInspector inspector) {
+ private void inspect(CodeInspector inspector, ExternalArtProfile residualArtProfile) {
ClassSubject consumerClassSubject =
inspector.clazz(
libraryDesugaringSpecification.functionPrefix(parameters) + ".util.function.Consumer");
@@ -112,7 +117,7 @@
&& libraryDesugaringSpecification == LibraryDesugaringSpecification.JDK8));
assertEquals(consumerClassSubject.asTypeSubject(), forEachMethodSubject.getParameter(0));
- profileInspector.assertEqualTo(getExpectedResidualArtProfile(forEachMethodSubject));
+ assertEquals(getExpectedResidualArtProfile(forEachMethodSubject), residualArtProfile);
}
static class Main {
diff --git a/src/test/java/com/android/tools/r8/profile/art/NoSuchClassAndMethodProfileRewritingTest.java b/src/test/java/com/android/tools/r8/profile/art/NoSuchClassAndMethodProfileRewritingTest.java
index 7b598a1..ea4933c 100644
--- a/src/test/java/com/android/tools/r8/profile/art/NoSuchClassAndMethodProfileRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/profile/art/NoSuchClassAndMethodProfileRewritingTest.java
@@ -4,13 +4,14 @@
package com.android.tools.r8.profile.art;
+import static org.junit.Assert.assertEquals;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestDiagnosticMessages;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.profile.art.model.ExternalArtProfile;
-import com.android.tools.r8.profile.art.utils.ArtProfileInspector;
+import com.android.tools.r8.profile.art.utils.ArtProfileTestingUtils;
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.references.Reference;
import org.junit.Test;
@@ -35,11 +36,12 @@
testForR8(parameters.getBackend())
.addInnerClasses(getClass())
.addKeepMainRule(Main.class)
- .addArtProfileForRewriting(getArtProfile())
+ .apply(
+ ArtProfileTestingUtils.addArtProfileForRewriting(
+ getArtProfile(), this::inspectResidualArtProfile))
.setMinApi(parameters.getApiLevel())
// TODO(b/266178791): Emit a warning for each discarded item.
.compileWithExpectedDiagnostics(TestDiagnosticMessages::assertNoMessages)
- .inspectResidualArtProfile(this::inspectResidualArtProfile)
.run(parameters.getRuntime(), Main.class)
.assertSuccessWithOutputLines("Hello, world!");
}
@@ -52,10 +54,10 @@
.build();
}
- private void inspectResidualArtProfile(ArtProfileInspector profileInspector) {
+ private void inspectResidualArtProfile(ExternalArtProfile residualArtProfile) {
// None of the items in the profile exist in the input.
// TODO(b/266178791): Discard items from profile that is not in the input app.
- profileInspector.assertNotEmpty();
+ assertEquals(getArtProfile(), residualArtProfile);
}
static class Main {
diff --git a/src/test/java/com/android/tools/r8/profile/art/NonEmptyToEmptyProfileRewritingTest.java b/src/test/java/com/android/tools/r8/profile/art/NonEmptyToEmptyProfileRewritingTest.java
index 60e14df..4fb34a0 100644
--- a/src/test/java/com/android/tools/r8/profile/art/NonEmptyToEmptyProfileRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/profile/art/NonEmptyToEmptyProfileRewritingTest.java
@@ -7,12 +7,13 @@
import static com.android.tools.r8.utils.codeinspector.Matchers.isAbsent;
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.profile.art.model.ExternalArtProfile;
-import com.android.tools.r8.profile.art.utils.ArtProfileInspector;
+import com.android.tools.r8.profile.art.utils.ArtProfileTestingUtils;
import com.android.tools.r8.references.Reference;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -38,11 +39,12 @@
testForR8(parameters.getBackend())
.addInnerClasses(getClass())
.addKeepMainRule(Main.class)
- .addArtProfileForRewriting(getArtProfile())
+ .apply(
+ ArtProfileTestingUtils.addArtProfileForRewriting(
+ getArtProfile(), this::inspectResidualArtProfile))
.setMinApi(parameters.getApiLevel())
.compile()
.inspect(this::inspect)
- .inspectResidualArtProfile(this::inspectResidualArtProfile)
.run(parameters.getRuntime(), Main.class)
.assertSuccessWithOutputLines("Hello, world!");
}
@@ -60,9 +62,9 @@
assertThat(mainClassSubject.uniqueMethodWithOriginalName("dead"), isAbsent());
}
- private void inspectResidualArtProfile(ArtProfileInspector profileInspector) {
+ private void inspectResidualArtProfile(ExternalArtProfile residualArtProfile) {
// After shaking of Main.dead() the ART profile should become empty.
- profileInspector.assertEmpty();
+ assertEquals(ExternalArtProfile.builder().build(), residualArtProfile);
}
static class Main {
diff --git a/src/test/java/com/android/tools/r8/profile/art/completeness/SyntheticLambdaClassProfileRewritingTest.java b/src/test/java/com/android/tools/r8/profile/art/completeness/SyntheticLambdaClassProfileRewritingTest.java
index 5b23bff..3e9ef1c 100644
--- a/src/test/java/com/android/tools/r8/profile/art/completeness/SyntheticLambdaClassProfileRewritingTest.java
+++ b/src/test/java/com/android/tools/r8/profile/art/completeness/SyntheticLambdaClassProfileRewritingTest.java
@@ -7,13 +7,14 @@
import static com.android.tools.r8.utils.codeinspector.Matchers.isPresent;
import static com.android.tools.r8.utils.codeinspector.Matchers.onlyIf;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.profile.art.model.ExternalArtProfile;
import com.android.tools.r8.profile.art.model.ExternalArtProfileMethodRule;
-import com.android.tools.r8.profile.art.utils.ArtProfileInspector;
+import com.android.tools.r8.profile.art.utils.ArtProfileTestingUtils;
import com.android.tools.r8.synthesis.SyntheticItemsTestUtils;
import com.android.tools.r8.utils.MethodReferenceUtils;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
@@ -39,12 +40,14 @@
testForR8(parameters.getBackend())
.addInnerClasses(getClass())
.addKeepMainRule(Main.class)
- .addArtProfileForRewriting(getArtProfile())
+ .apply(
+ testBuilder ->
+ ArtProfileTestingUtils.addArtProfileForRewriting(
+ getArtProfile(), this::inspectResidualArtProfile, testBuilder))
.noHorizontalClassMergingOfSynthetics()
.setMinApi(parameters.getApiLevel())
.compile()
.inspect(this::inspect)
- .inspectResidualArtProfile(this::inspectResidualArtProfile)
.run(parameters.getRuntime(), Main.class)
.assertSuccessWithOutputLines("Hello, world!");
}
@@ -68,14 +71,14 @@
onlyIf(parameters.isDexRuntime(), isPresent()));
}
- private void inspectResidualArtProfile(ArtProfileInspector profileInspector) {
+ private void inspectResidualArtProfile(ExternalArtProfile residualArtProfile) {
if (parameters.isCfRuntime()) {
- profileInspector.assertEqualTo(getArtProfile());
+ assertEquals(getArtProfile(), residualArtProfile);
} else {
assert parameters.isDexRuntime();
// TODO(b/265729283): Since Main.main() is in the art profile, so should the two synthetic
// lambdas be.
- profileInspector.assertEqualTo(getArtProfile());
+ assertEquals(getArtProfile(), residualArtProfile);
}
}
diff --git a/src/test/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnosticFromArtProfileTest.java b/src/test/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnosticFromArtProfileTest.java
index c22ad2a..ba3a623 100644
--- a/src/test/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnosticFromArtProfileTest.java
+++ b/src/test/java/com/android/tools/r8/profile/art/diagnostic/HumanReadableArtProfileParserErrorDiagnosticFromArtProfileTest.java
@@ -10,13 +10,20 @@
import static org.hamcrest.CoreMatchers.equalTo;
import com.android.tools.r8.CompilationFailedException;
+import com.android.tools.r8.DiagnosticsHandler;
import com.android.tools.r8.TestBase;
import com.android.tools.r8.TestDiagnosticMessages;
import com.android.tools.r8.TestParameters;
import com.android.tools.r8.TestParametersCollection;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.profile.art.ArtProfileBuilder;
+import com.android.tools.r8.profile.art.ArtProfileClassRuleInfo;
+import com.android.tools.r8.profile.art.ArtProfileConsumer;
+import com.android.tools.r8.profile.art.ArtProfileMethodRuleInfo;
import com.android.tools.r8.profile.art.ArtProfileProvider;
+import com.android.tools.r8.profile.art.ArtProfileRuleConsumer;
+import com.android.tools.r8.references.ClassReference;
+import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.utils.AndroidApiLevel;
import com.android.tools.r8.utils.ConsumerUtils;
import com.android.tools.r8.utils.UTF8TextInputStream;
@@ -42,7 +49,7 @@
public void testD8() throws Exception {
testForD8()
.addProgramClasses(Main.class)
- .addArtProfileForRewriting(createArtProfileProvider())
+ .addArtProfileForRewriting(createArtProfileProvider(), createArtProfileConsumer())
.release()
.setMinApi(AndroidApiLevel.LATEST)
.compileWithExpectedDiagnostics(this::inspectDiagnostics);
@@ -53,7 +60,7 @@
testForR8(Backend.DEX)
.addProgramClasses(Main.class)
.addKeepMainRule(Main.class)
- .addArtProfileForRewriting(createArtProfileProvider())
+ .addArtProfileForRewriting(createArtProfileProvider(), createArtProfileConsumer())
.release()
.setMinApi(AndroidApiLevel.LATEST)
.compileWithExpectedDiagnostics(this::inspectDiagnostics);
@@ -76,6 +83,34 @@
};
}
+ private ArtProfileConsumer createArtProfileConsumer() {
+ return new ArtProfileConsumer() {
+
+ @Override
+ public ArtProfileRuleConsumer getRuleConsumer() {
+ return new ArtProfileRuleConsumer() {
+
+ @Override
+ public void acceptClassRule(
+ ClassReference classReference, ArtProfileClassRuleInfo classRuleInfo) {
+ // Ignore.
+ }
+
+ @Override
+ public void acceptMethodRule(
+ MethodReference methodReference, ArtProfileMethodRuleInfo methodRuleInfo) {
+ // Ignore.
+ }
+ };
+ }
+
+ @Override
+ public void finished(DiagnosticsHandler handler) {
+ // Ignore.
+ }
+ };
+ }
+
private void inspectDiagnostics(TestDiagnosticMessages diagnostics) {
diagnostics.assertErrorsMatch(
allOf(
diff --git a/src/test/java/com/android/tools/r8/profile/art/model/ExternalArtProfile.java b/src/test/java/com/android/tools/r8/profile/art/model/ExternalArtProfile.java
index 9dd4d42..0c3ae80 100644
--- a/src/test/java/com/android/tools/r8/profile/art/model/ExternalArtProfile.java
+++ b/src/test/java/com/android/tools/r8/profile/art/model/ExternalArtProfile.java
@@ -42,10 +42,6 @@
}
}
- public int size() {
- return rules.size();
- }
-
@Override
public boolean equals(Object obj) {
if (this == obj) {
diff --git a/src/test/java/com/android/tools/r8/profile/art/utils/ArtProfileInspector.java b/src/test/java/com/android/tools/r8/profile/art/utils/ArtProfileInspector.java
deleted file mode 100644
index af0a9a9..0000000
--- a/src/test/java/com/android/tools/r8/profile/art/utils/ArtProfileInspector.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright (c) 2023, 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.profile.art.utils;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import com.android.tools.r8.profile.art.model.ExternalArtProfile;
-
-public class ArtProfileInspector {
-
- private final ExternalArtProfile artProfile;
-
- public ArtProfileInspector(ExternalArtProfile artProfile) {
- this.artProfile = artProfile;
- }
-
- public ArtProfileInspector assertEmpty() {
- assertEquals(0, artProfile.size());
- return this;
- }
-
- public ArtProfileInspector assertEqualTo(ExternalArtProfile otherArtProfile) {
- assertEquals(otherArtProfile, artProfile);
- return this;
- }
-
- public ArtProfileInspector assertNotEmpty() {
- assertNotEquals(0, artProfile.size());
- return this;
- }
-}
diff --git a/src/test/java/com/android/tools/r8/profile/art/utils/ArtProfileTestingUtils.java b/src/test/java/com/android/tools/r8/profile/art/utils/ArtProfileTestingUtils.java
index c86ad4d..697cb87 100644
--- a/src/test/java/com/android/tools/r8/profile/art/utils/ArtProfileTestingUtils.java
+++ b/src/test/java/com/android/tools/r8/profile/art/utils/ArtProfileTestingUtils.java
@@ -5,6 +5,9 @@
package com.android.tools.r8.profile.art.utils;
import com.android.tools.r8.DiagnosticsHandler;
+import com.android.tools.r8.R8TestBuilder;
+import com.android.tools.r8.ThrowableConsumer;
+import com.android.tools.r8.desugar.desugaredlibrary.test.DesugaredLibraryTestBuilder;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.profile.art.ArtProfileBuilder;
import com.android.tools.r8.profile.art.ArtProfileClassRuleInfo;
@@ -21,8 +24,38 @@
public class ArtProfileTestingUtils {
+ public static <B extends R8TestBuilder<?>> ThrowableConsumer<B> addArtProfileForRewriting(
+ ExternalArtProfile artProfile, Consumer<ExternalArtProfile> residualArtProfileInspector) {
+ return testBuilder ->
+ testBuilder.addArtProfileForRewriting(
+ createArtProfileProvider(artProfile),
+ createResidualArtProfileConsumer(residualArtProfileInspector));
+ }
+
+ /**
+ * Adds the given {@param artProfile} as an ART profile for rewriting. The residual ART profile
+ * will be forwarded to the given test inspector, {@param residualArtProfileInspector}.
+ */
+ public static void addArtProfileForRewriting(
+ ExternalArtProfile artProfile,
+ Consumer<ExternalArtProfile> residualArtProfileInspector,
+ R8TestBuilder<?> testBuilder) {
+ testBuilder.addArtProfileForRewriting(
+ createArtProfileProvider(artProfile),
+ createResidualArtProfileConsumer(residualArtProfileInspector));
+ }
+
+ public static void addArtProfileForRewriting(
+ ExternalArtProfile artProfile,
+ Consumer<ExternalArtProfile> residualArtProfileInspector,
+ DesugaredLibraryTestBuilder<?> testBuilder) {
+ testBuilder.addL8ArtProfileForRewriting(
+ createArtProfileProvider(artProfile),
+ createResidualArtProfileConsumer(residualArtProfileInspector));
+ }
+
// Creates an ArtProfileProvider for passing the given ART profile to a D8/L8/R8 compilation.
- public static ArtProfileProvider createArtProfileProvider(ExternalArtProfile artProfile) {
+ private static ArtProfileProvider createArtProfileProvider(ExternalArtProfile artProfile) {
return new ArtProfileProvider() {
@Override
@@ -54,7 +87,7 @@
}
// Creates an ArtProfileConsumer for accepting the residual ART profile from the compilation.
- public static ArtProfileConsumer createResidualArtProfileConsumer(
+ private static ArtProfileConsumer createResidualArtProfileConsumer(
Consumer<ExternalArtProfile> residualArtProfileInspector) {
return new ArtProfileConsumer() {