Minor cleanup of startup profile
Change-Id: I452beb08ddc82fb848304c56335a2523b9a30e35
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/NonEmptyStartupOrder.java b/src/main/java/com/android/tools/r8/experimental/startup/NonEmptyStartupOrder.java
index 10dc344..e67e98a 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/NonEmptyStartupOrder.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/NonEmptyStartupOrder.java
@@ -105,12 +105,10 @@
StartupItem startupItem,
LinkedHashMap<DexReference, StartupItem> rewrittenStartupItems,
AppView<?> appView) {
- if (startupItem.isStartupClass()) {
- addClassAndParentClasses(
- startupItem.asStartupClass().getReference(), rewrittenStartupItems, appView);
- } else {
- rewrittenStartupItems.put(startupItem.getReference(), startupItem);
- }
+ startupItem.accept(
+ startupClass ->
+ addClassAndParentClasses(startupClass.getReference(), rewrittenStartupItems, appView),
+ startupMethod -> rewrittenStartupItems.put(startupItem.getReference(), startupItem));
}
private static boolean addClass(
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/StartupProfileProviderUtils.java b/src/main/java/com/android/tools/r8/experimental/startup/StartupProfileProviderUtils.java
index 4c8ea1b..6e288b5 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/StartupProfileProviderUtils.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/StartupProfileProviderUtils.java
@@ -50,7 +50,7 @@
/** Serialize the given {@param startupProfileProvider} to a string for writing it to a dump. */
public static String serializeToString(
- InternalOptions options, StartupProfileProvider startupProfileProvider) {
+ InternalOptions options, StartupProfileProvider startupProfileProvider) throws IOException {
// Do not report missing items.
MissingStartupProfileItemsDiagnostic.Builder missingItemsDiagnosticBuilder =
MissingStartupProfileItemsDiagnostic.Builder.nop();
@@ -63,7 +63,8 @@
// Serialize the startup items.
StringBuilder resultBuilder = new StringBuilder();
for (StartupItem startupItem : startupProfileBuilder.build().getStartupItems()) {
- resultBuilder.append(startupItem.serializeToString()).append('\n');
+ startupItem.write(resultBuilder);
+ resultBuilder.append('\n');
}
return resultBuilder.toString();
}
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupClass.java b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupClass.java
index 9ab1224..8e4efdb 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupClass.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupClass.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.references.ClassReference;
import com.android.tools.r8.startup.StartupClassBuilder;
import com.android.tools.r8.utils.ClassReferenceUtils;
+import java.io.IOException;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -45,16 +46,6 @@
}
@Override
- public boolean isStartupClass() {
- return true;
- }
-
- @Override
- public StartupClass asStartupClass() {
- return this;
- }
-
- @Override
public boolean equals(Object o) {
if (this == o) {
return true;
@@ -72,8 +63,8 @@
}
@Override
- public String serializeToString() {
- return getReference().toDescriptorString();
+ public void write(Appendable appendable) throws IOException {
+ appendable.append(getReference().toDescriptorString());
}
public static class Builder implements StartupClassBuilder {
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupItem.java b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupItem.java
index 91a615e..6ab6ec1 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupItem.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupItem.java
@@ -5,6 +5,7 @@
package com.android.tools.r8.experimental.startup.profile;
import com.android.tools.r8.graph.DexReference;
+import java.io.IOException;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -18,23 +19,5 @@
public abstract DexReference getReference();
- public boolean isStartupClass() {
- return false;
- }
-
- public StartupClass asStartupClass() {
- assert false;
- return null;
- }
-
- public boolean isStartupMethod() {
- return false;
- }
-
- public StartupMethod asStartupMethod() {
- assert false;
- return null;
- }
-
- public abstract String serializeToString();
+ public abstract void write(Appendable appendable) throws IOException;
}
diff --git a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupMethod.java b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupMethod.java
index e245260..5d7448b 100644
--- a/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupMethod.java
+++ b/src/main/java/com/android/tools/r8/experimental/startup/profile/StartupMethod.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.references.MethodReference;
import com.android.tools.r8.startup.StartupMethodBuilder;
import com.android.tools.r8.utils.MethodReferenceUtils;
+import java.io.IOException;
import java.util.function.Consumer;
import java.util.function.Function;
@@ -45,16 +46,6 @@
}
@Override
- public boolean isStartupMethod() {
- return true;
- }
-
- @Override
- public StartupMethod asStartupMethod() {
- return this;
- }
-
- @Override
public boolean equals(Object o) {
if (this == o) {
return true;
@@ -72,8 +63,8 @@
}
@Override
- public String serializeToString() {
- return method.toSmaliString();
+ public void write(Appendable appendable) throws IOException {
+ appendable.append(method.toSmaliString());
}
public static class Builder implements StartupMethodBuilder {
diff --git a/src/test/java/com/android/tools/r8/D8CommandTest.java b/src/test/java/com/android/tools/r8/D8CommandTest.java
index 2eda6e7..9066212 100644
--- a/src/test/java/com/android/tools/r8/D8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/D8CommandTest.java
@@ -22,7 +22,6 @@
import com.android.tools.r8.dex.Marker;
import com.android.tools.r8.dex.Marker.Tool;
import com.android.tools.r8.experimental.startup.profile.StartupItem;
-import com.android.tools.r8.experimental.startup.profile.StartupMethod;
import com.android.tools.r8.experimental.startup.profile.StartupProfile;
import com.android.tools.r8.origin.EmbeddedOrigin;
import com.android.tools.r8.origin.Origin;
@@ -816,9 +815,9 @@
Collection<StartupItem> startupItems = startupProfile.getStartupItems();
assertEquals(1, startupItems.size());
StartupItem startupItem = startupItems.iterator().next();
- assertTrue(startupItem.isStartupMethod());
- StartupMethod startupMethod = startupItem.asStartupMethod();
- assertEquals(profileRule, startupMethod.getReference().toSmaliString());
+ startupItem.accept(
+ startupClass -> fail(),
+ startupMethod -> assertEquals(profileRule, startupMethod.getReference().toSmaliString()));
}
@Test