Revert "Include art profiles for rewriting in dumps"
This reverts commit 9792f50a9cd3f575a68f472d0f47ea15e02f396f.
Reason for revert: Failures
Change-Id: I05337166c7789ab89d4a88fdec1d5a951908726d
diff --git a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
index f251ecb..4d1269c 100644
--- a/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
+++ b/src/main/java/com/android/tools/r8/BaseCompilerCommand.java
@@ -21,7 +21,6 @@
import com.android.tools.r8.utils.DumpInputFlags;
import com.android.tools.r8.utils.FileUtils;
import com.android.tools.r8.utils.InternalOptions.DesugarState;
-import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.ProgramConsumerUtils;
import com.android.tools.r8.utils.Reporter;
import com.android.tools.r8.utils.ThreadUtils;
@@ -155,9 +154,6 @@
.setOptimizeMultidexForLinearAlloc(isOptimizeMultidexForLinearAlloc())
.setThreadCount(getThreadCount())
.setDesugarState(getDesugarState())
- .setArtProfileProviders(
- ListUtils.map(
- getArtProfilesForRewriting(), ArtProfileForRewriting::getArtProfileProvider))
.setStartupProfileProviders(getStartupProfileProviders());
if (getAndroidPlatformBuild()) {
builder.setAndroidPlatformBuild(true);
diff --git a/src/main/java/com/android/tools/r8/dump/DumpOptions.java b/src/main/java/com/android/tools/r8/dump/DumpOptions.java
index 0c538fa..2ecf1d3 100644
--- a/src/main/java/com/android/tools/r8/dump/DumpOptions.java
+++ b/src/main/java/com/android/tools/r8/dump/DumpOptions.java
@@ -9,7 +9,6 @@
import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.features.FeatureSplitConfiguration;
import com.android.tools.r8.ir.desugar.desugaredlibrary.DesugaredLibrarySpecification;
-import com.android.tools.r8.profile.art.ArtProfileProvider;
import com.android.tools.r8.shaking.ProguardConfiguration;
import com.android.tools.r8.shaking.ProguardConfigurationRule;
import com.android.tools.r8.startup.StartupProfileProvider;
@@ -70,7 +69,6 @@
private final FeatureSplitConfiguration featureSplitConfiguration;
private final ProguardConfiguration proguardConfiguration;
private final List<ProguardConfigurationRule> mainDexKeepRules;
- private final Collection<ArtProfileProvider> artProfileProviders;
private final Collection<StartupProfileProvider> startupProfileProviders;
private final boolean enableMissingLibraryApiModeling;
private final boolean isAndroidPlatformBuild;
@@ -100,7 +98,6 @@
FeatureSplitConfiguration featureSplitConfiguration,
ProguardConfiguration proguardConfiguration,
List<ProguardConfigurationRule> mainDexKeepRules,
- Collection<ArtProfileProvider> artProfileProviders,
Collection<StartupProfileProvider> startupProfileProviders,
boolean enableMissingLibraryApiModeling,
boolean isAndroidPlatformBuild,
@@ -123,7 +120,6 @@
this.featureSplitConfiguration = featureSplitConfiguration;
this.proguardConfiguration = proguardConfiguration;
this.mainDexKeepRules = mainDexKeepRules;
- this.artProfileProviders = artProfileProviders;
this.startupProfileProviders = startupProfileProviders;
this.enableMissingLibraryApiModeling = enableMissingLibraryApiModeling;
this.isAndroidPlatformBuild = isAndroidPlatformBuild;
@@ -300,14 +296,6 @@
return mainDexKeepRules;
}
- public boolean hasArtProfileProviders() {
- return artProfileProviders != null && !artProfileProviders.isEmpty();
- }
-
- public Collection<ArtProfileProvider> getArtProfileProviders() {
- return artProfileProviders;
- }
-
public boolean hasStartupProfileProviders() {
return startupProfileProviders != null && !startupProfileProviders.isEmpty();
}
@@ -343,7 +331,6 @@
private FeatureSplitConfiguration featureSplitConfiguration;
private ProguardConfiguration proguardConfiguration;
private List<ProguardConfigurationRule> mainDexKeepRules;
- private Collection<ArtProfileProvider> artProfileProviders;
private Collection<StartupProfileProvider> startupProfileProviders;
private boolean enableMissingLibraryApiModeling = false;
@@ -450,11 +437,6 @@
return this;
}
- public Builder setArtProfileProviders(Collection<ArtProfileProvider> artProfileProviders) {
- this.artProfileProviders = artProfileProviders;
- return this;
- }
-
public Builder setStartupProfileProviders(
Collection<StartupProfileProvider> startupProfileProviders) {
this.startupProfileProviders = startupProfileProviders;
@@ -515,7 +497,6 @@
featureSplitConfiguration,
proguardConfiguration,
mainDexKeepRules,
- artProfileProviders,
startupProfileProviders,
enableMissingLibraryApiModeling,
isAndroidPlatformBuild,
diff --git a/src/main/java/com/android/tools/r8/profile/art/ArtProfileProviderUtils.java b/src/main/java/com/android/tools/r8/profile/art/ArtProfileProviderUtils.java
index e09b79c..bc3cbb5 100644
--- a/src/main/java/com/android/tools/r8/profile/art/ArtProfileProviderUtils.java
+++ b/src/main/java/com/android/tools/r8/profile/art/ArtProfileProviderUtils.java
@@ -6,23 +6,12 @@
import static com.android.tools.r8.utils.ConsumerUtils.emptyConsumer;
-import com.android.tools.r8.TextInputStream;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
-import com.android.tools.r8.references.ClassReference;
-import com.android.tools.r8.references.MethodReference;
-import com.android.tools.r8.utils.Box;
-import com.android.tools.r8.utils.ClassReferenceUtils;
-import com.android.tools.r8.utils.MethodReferenceUtils;
import com.android.tools.r8.utils.UTF8TextInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
import java.io.UncheckedIOException;
-import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
-import java.util.function.Consumer;
public class ArtProfileProviderUtils {
@@ -44,101 +33,4 @@
}
};
}
-
- /** Serialize the given {@param artProfileProvider} to a string for writing it to a dump. */
- public static String serializeToString(ArtProfileProvider artProfileProvider) throws IOException {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- try (OutputStreamWriter outputStreamWriter =
- new OutputStreamWriter(baos, StandardCharsets.UTF_8)) {
- artProfileProvider.getArtProfile(
- new ArtProfileBuilder() {
-
- @Override
- public ArtProfileBuilder addClassRule(
- Consumer<ArtProfileClassRuleBuilder> classRuleBuilderConsumer) {
- classRuleBuilderConsumer.accept(
- new ArtProfileClassRuleBuilder() {
-
- @Override
- public ArtProfileClassRuleBuilder setClassReference(
- ClassReference classReference) {
- writeLine(
- outputStreamWriter, ClassReferenceUtils.toSmaliString(classReference));
- return this;
- }
- });
- return this;
- }
-
- @Override
- public ArtProfileBuilder addMethodRule(
- Consumer<ArtProfileMethodRuleBuilder> methodRuleBuilderConsumer) {
- Box<MethodReference> methodReferenceBox = new Box<>();
- methodRuleBuilderConsumer.accept(
- new ArtProfileMethodRuleBuilder() {
-
- @Override
- public ArtProfileMethodRuleBuilder setMethodReference(
- MethodReference methodReference) {
- methodReferenceBox.set(methodReference);
- return this;
- }
-
- @Override
- public ArtProfileMethodRuleBuilder setMethodRuleInfo(
- Consumer<ArtProfileMethodRuleInfoBuilder> methodRuleInfoBuilderConsumer) {
- ArtProfileMethodRuleInfoImpl.Builder artProfileMethodRuleInfoBuilder =
- ArtProfileMethodRuleInfoImpl.builder();
- methodRuleInfoBuilderConsumer.accept(artProfileMethodRuleInfoBuilder);
- ArtProfileMethodRuleInfoImpl artProfileMethodRuleInfo =
- artProfileMethodRuleInfoBuilder.build();
- try {
- artProfileMethodRuleInfo.writeHumanReadableFlags(outputStreamWriter);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return this;
- }
- });
- writeLine(
- outputStreamWriter, MethodReferenceUtils.toSmaliString(methodReferenceBox.get()));
- return this;
- }
-
- @Override
- public ArtProfileBuilder addHumanReadableArtProfile(
- TextInputStream textInputStream,
- Consumer<HumanReadableArtProfileParserBuilder> parserBuilderConsumer) {
- try (InputStreamReader inputStreamReader =
- new InputStreamReader(
- textInputStream.getInputStream(), textInputStream.getCharset())) {
- char[] buffer = new char[1024];
- int len = inputStreamReader.read(buffer);
- while (len != -1) {
- outputStreamWriter.write(buffer, 0, len);
- len = inputStreamReader.read(buffer);
- }
- writeLine(outputStreamWriter);
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- return this;
- }
- });
- }
- return baos.toString();
- }
-
- private static void writeLine(OutputStreamWriter outputStreamWriter) {
- writeLine(outputStreamWriter, "");
- }
-
- private static void writeLine(OutputStreamWriter outputStreamWriter, String string) {
- try {
- outputStreamWriter.write(string);
- outputStreamWriter.write('\n');
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
- }
}
diff --git a/src/main/java/com/android/tools/r8/utils/AndroidApp.java b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
index cf3047d..8ea5c72 100644
--- a/src/main/java/com/android/tools/r8/utils/AndroidApp.java
+++ b/src/main/java/com/android/tools/r8/utils/AndroidApp.java
@@ -42,8 +42,6 @@
import com.android.tools.r8.origin.ArchiveEntryOrigin;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.origin.PathOrigin;
-import com.android.tools.r8.profile.art.ArtProfileProvider;
-import com.android.tools.r8.profile.art.ArtProfileProviderUtils;
import com.android.tools.r8.shaking.FilteredClassPath;
import com.android.tools.r8.startup.StartupProfileProvider;
import com.android.tools.r8.synthesis.SyntheticItems;
@@ -541,9 +539,6 @@
StringUtils.joinLines(dumpOptions.getMainDexKeepRules()).getBytes(),
ZipEntry.DEFLATED);
}
- if (dumpOptions.hasArtProfileProviders()) {
- dumpArtProfileProviders(dumpOptions.getArtProfileProviders(), options, out);
- }
if (dumpOptions.hasStartupProfileProviders()) {
dumpStartupProfileProviders(dumpOptions.getStartupProfileProviders(), options, out);
}
@@ -576,23 +571,6 @@
return nextDexIndex;
}
- private void dumpArtProfileProviders(
- Collection<ArtProfileProvider> artProfileProviders,
- InternalOptions options,
- ZipOutputStream out)
- throws IOException {
- int artProfileProviderIndex = 1;
- for (ArtProfileProvider artProfileProvider : artProfileProviders) {
- String artProfileFileName = "art-profile-" + artProfileProviderIndex + ".txt";
- writeToZipStream(
- out,
- artProfileFileName,
- ArtProfileProviderUtils.serializeToString(artProfileProvider).getBytes(),
- ZipEntry.DEFLATED);
- artProfileProviderIndex++;
- }
- }
-
private void dumpStartupProfileProviders(
Collection<StartupProfileProvider> startupProfileProviders,
InternalOptions options,
@@ -600,10 +578,11 @@
throws IOException {
int startupProfileProviderIndex = 1;
for (StartupProfileProvider startupProfileProvider : startupProfileProviders) {
- String startupProfileFileName = "startup-profile-" + startupProfileProviderIndex + ".txt";
+ String startupProfileProviderFileName =
+ "startup-profile-" + startupProfileProviderIndex + ".txt";
writeToZipStream(
out,
- startupProfileFileName,
+ startupProfileProviderFileName,
StartupProfileProviderUtils.serializeToString(options, startupProfileProvider).getBytes(),
ZipEntry.DEFLATED);
startupProfileProviderIndex++;
diff --git a/src/main/java/com/android/tools/r8/utils/UTF8TextInputStream.java b/src/main/java/com/android/tools/r8/utils/UTF8TextInputStream.java
index 709df16..20252e7 100644
--- a/src/main/java/com/android/tools/r8/utils/UTF8TextInputStream.java
+++ b/src/main/java/com/android/tools/r8/utils/UTF8TextInputStream.java
@@ -5,7 +5,6 @@
package com.android.tools.r8.utils;
import com.android.tools.r8.TextInputStream;
-import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.nio.charset.Charset;
@@ -21,10 +20,6 @@
this(Files.newInputStream(path));
}
- public UTF8TextInputStream(String string) {
- this(new ByteArrayInputStream(string.getBytes()));
- }
-
public UTF8TextInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}
diff --git a/src/test/java/com/android/tools/r8/profile/art/dump/DumpArtProfileProvidersTest.java b/src/test/java/com/android/tools/r8/profile/art/dump/DumpArtProfileProvidersTest.java
deleted file mode 100644
index 71a58e7..0000000
--- a/src/test/java/com/android/tools/r8/profile/art/dump/DumpArtProfileProvidersTest.java
+++ /dev/null
@@ -1,192 +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.dump;
-
-import static com.android.tools.r8.DiagnosticsMatcher.diagnosticMessage;
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import com.android.tools.r8.CompilationFailedException;
-import com.android.tools.r8.R8FullTestBuilder;
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.TestParameters;
-import com.android.tools.r8.origin.Origin;
-import com.android.tools.r8.profile.art.ArtProfileBuilder;
-import com.android.tools.r8.profile.art.ArtProfileProvider;
-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.DumpInputFlags;
-import com.android.tools.r8.utils.FileUtils;
-import com.android.tools.r8.utils.MethodReferenceUtils;
-import com.android.tools.r8.utils.StringUtils;
-import com.android.tools.r8.utils.UTF8TextInputStream;
-import com.android.tools.r8.utils.ZipUtils;
-import com.google.common.collect.Lists;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.List;
-import java.util.stream.Collectors;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-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 DumpArtProfileProvidersTest extends TestBase {
-
- private enum DumpStrategy {
- DIRECTORY,
- FILE;
-
- DumpInputFlags createDumpInputFlags(Path dump) {
- if (this == DIRECTORY) {
- return DumpInputFlags.dumpToDirectory(dump);
- }
- assert this == FILE;
- return DumpInputFlags.dumpToFile(dump);
- }
-
- Path createDumpPath(TemporaryFolder temp) throws IOException {
- if (this == DIRECTORY) {
- return temp.newFolder().toPath();
- }
- assert this == FILE;
- return temp.newFile("dump.zip").toPath();
- }
- }
-
- @Parameter(0)
- public DumpStrategy dumpStrategy;
-
- @Parameter(1)
- public TestParameters parameters;
-
- @Parameters(name = "{1}, {0}")
- public static List<Object[]> data() {
- return buildParameters(DumpStrategy.values(), getTestParameters().withNoneRuntime().build());
- }
-
- @Test
- public void test() throws Exception {
- Path dump = dumpStrategy.createDumpPath(temp);
- DumpInputFlags dumpInputFlags = dumpStrategy.createDumpInputFlags(dump);
- try {
- testForR8(Backend.DEX)
- .addProgramClasses(Main.class)
- .addKeepMainRule(Main.class)
- .addOptionsModification(options -> options.setDumpInputFlags(dumpInputFlags))
- .allowDiagnosticInfoMessages()
- .apply(this::addArtProfileProviders)
- .setMinApi(AndroidApiLevel.LATEST)
- .compileWithExpectedDiagnostics(
- diagnostics -> {
- if (dumpInputFlags.shouldFailCompilation()) {
- diagnostics.assertErrorsMatch(
- diagnosticMessage(containsString("Dumped compilation inputs to:")));
- } else {
- diagnostics.assertInfosMatch(
- diagnosticMessage(containsString("Dumped compilation inputs to:")));
- }
- });
- assertFalse("Expected compilation to fail", dumpInputFlags.shouldFailCompilation());
- } catch (CompilationFailedException e) {
- assertTrue("Expected compilation to succeed", dumpInputFlags.shouldFailCompilation());
- }
- verifyDump(dump);
- }
-
- private void addArtProfileProviders(R8FullTestBuilder testBuilder) {
- testBuilder.addArtProfileForRewriting(
- new ArtProfileProvider() {
-
- @Override
- public void getArtProfile(ArtProfileBuilder profileBuilder) {
- profileBuilder.addHumanReadableArtProfile(
- new UTF8TextInputStream(StringUtils.joinLines("# Comment", "Lfoo/Bar;")),
- parserBuilder -> {});
- ClassReference bazClassReference = Reference.classFromDescriptor("Lfoo/Baz;");
- MethodReference bazMainMethodReference =
- MethodReferenceUtils.mainMethod(bazClassReference);
- profileBuilder.addClassRule(
- classRuleBuilder -> classRuleBuilder.setClassReference(bazClassReference));
- profileBuilder.addMethodRule(
- methodRuleBuilder ->
- methodRuleBuilder
- .setMethodReference(bazMainMethodReference)
- .setMethodRuleInfo(
- methodRuleInfoBuilder -> methodRuleInfoBuilder.setIsHot(true)));
- }
-
- @Override
- public Origin getOrigin() {
- return Origin.unknown();
- }
- });
- testBuilder.addArtProfileForRewriting(
- new ArtProfileProvider() {
-
- @Override
- public void getArtProfile(ArtProfileBuilder profileBuilder) {
- ClassReference bazClassReference = Reference.classFromDescriptor("Lfoo/Baz;");
- MethodReference bazMainMethodReference =
- MethodReferenceUtils.mainMethod(bazClassReference);
- profileBuilder.addClassRule(
- classRuleBuilder -> classRuleBuilder.setClassReference(bazClassReference));
- profileBuilder.addHumanReadableArtProfile(
- new UTF8TextInputStream(StringUtils.joinLines("# Comment", "Lfoo/Bar;")),
- parserBuilder -> {});
- profileBuilder.addMethodRule(
- methodRuleBuilder ->
- methodRuleBuilder
- .setMethodReference(bazMainMethodReference)
- .setMethodRuleInfo(
- methodRuleInfoBuilder -> methodRuleInfoBuilder.setIsHot(true)));
- }
-
- @Override
- public Origin getOrigin() {
- return Origin.unknown();
- }
- });
- }
-
- private void verifyDump(Path dump) throws IOException {
- if (dumpStrategy == DumpStrategy.DIRECTORY) {
- List<Path> dumps =
- Files.walk(dump, 1).filter(path -> path.toFile().isFile()).collect(Collectors.toList());
- assertEquals(1, dumps.size());
- dump = dumps.get(0);
- }
-
- assertTrue(Files.exists(dump));
- Path unzipped = temp.newFolder().toPath();
- ZipUtils.unzip(dump.toString(), unzipped.toFile());
-
- Path artProfile1 = unzipped.resolve("art-profile-1.txt");
- assertTrue(Files.exists(artProfile1));
- assertEquals(
- Lists.newArrayList(
- "# Comment", "Lfoo/Bar;", "Lfoo/Baz;", "HLfoo/Baz;->main([Ljava/lang/String;)V"),
- FileUtils.readAllLines(artProfile1));
-
- Path artProfile2 = unzipped.resolve("art-profile-2.txt");
- assertTrue(Files.exists(artProfile2));
- assertEquals(
- Lists.newArrayList(
- "Lfoo/Baz;", "# Comment", "Lfoo/Bar;", "HLfoo/Baz;->main([Ljava/lang/String;)V"),
- FileUtils.readAllLines(artProfile2));
- }
-
- static class Main {
-
- public static void main(String[] args) {}
- }
-}