Limit MissingStartupProfileItemsDiagnostic to 100 items
Bug: b/370937458
Change-Id: I4ef686cac2ee8c7dfe4d09864bb7729017c5e944
diff --git a/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java b/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java
index c5ab7a9..1087442 100644
--- a/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java
+++ b/src/main/java/com/android/tools/r8/startup/diagnostic/MissingStartupProfileItemsDiagnostic.java
@@ -13,6 +13,7 @@
import com.android.tools.r8.position.Position;
import com.android.tools.r8.profile.startup.profile.StartupProfileClassRule;
import com.android.tools.r8.profile.startup.profile.StartupProfileMethodRule;
+import com.android.tools.r8.utils.SystemPropertyUtils;
import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.Iterator;
@@ -22,6 +23,10 @@
@KeepForApi
public class MissingStartupProfileItemsDiagnostic implements Diagnostic {
+ private static final int THRESHOLD =
+ SystemPropertyUtils.parseSystemPropertyOrDefault(
+ "com.android.tools.r8.startup.diagnostic.limit", 100);
+
private final List<DexReference> missingStartupItems;
private final Origin origin;
@@ -43,6 +48,10 @@
@Override
public String getDiagnosticMessage() {
+ if (THRESHOLD == 0) {
+ return "Found " + missingStartupItems.size() + " missing startup classes and methods";
+ }
+
StringBuilder builder = new StringBuilder();
Iterator<DexReference> missingStartupItemIterator = missingStartupItems.iterator();
@@ -50,9 +59,21 @@
writeMissingStartupItem(builder, missingStartupItemIterator.next());
// Write remaining missing startup items with line separator before.
- while (missingStartupItemIterator.hasNext()) {
+ int itemsToReport = (THRESHOLD > 0 ? THRESHOLD : Integer.MAX_VALUE) - 1;
+ while (missingStartupItemIterator.hasNext() && itemsToReport > 0) {
writeMissingStartupItem(
builder.append(System.lineSeparator()), missingStartupItemIterator.next());
+ itemsToReport--;
+ }
+
+ if (missingStartupItemIterator.hasNext()) {
+ assert THRESHOLD > 0;
+ int omittedItems = missingStartupItems.size() - THRESHOLD;
+ builder
+ .append(System.lineSeparator())
+ .append("Found ")
+ .append(omittedItems)
+ .append(" other missing startup classes and methods");
}
return builder.toString();