Report timing for enqueuer worklist items
Bug: b/378464445
Change-Id: If1e1f3e93943ebc5d5177fc7e3848ab1bd49e374
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index bc74f85..9fa5c88 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -4731,10 +4731,13 @@
while (true) {
timing.begin("Compute fixpoint #" + round++);
long numberOfLiveItems = getNumberOfLiveItems();
+
+ timing.begin("Process worklist");
while (worklist.hasNext()) {
EnqueuerAction action = worklist.poll();
- action.run(this);
+ action.run(this, timing);
}
+ timing.end();
// Continue fix-point processing if -if rules are enabled by items that newly became live.
long numberOfLiveItemsAfterProcessing = getNumberOfLiveItems();
diff --git a/src/main/java/com/android/tools/r8/shaking/EnqueuerWorklist.java b/src/main/java/com/android/tools/r8/shaking/EnqueuerWorklist.java
index cf7ee8f..82ae22b 100644
--- a/src/main/java/com/android/tools/r8/shaking/EnqueuerWorklist.java
+++ b/src/main/java/com/android/tools/r8/shaking/EnqueuerWorklist.java
@@ -20,6 +20,7 @@
import com.android.tools.r8.shaking.GraphReporter.KeepReasonWitness;
import com.android.tools.r8.utils.Action;
import com.android.tools.r8.utils.InternalOptions;
+import com.android.tools.r8.utils.Timing;
import java.util.Collection;
import java.util.Objects;
import java.util.Queue;
@@ -28,7 +29,18 @@
public abstract class EnqueuerWorklist {
public abstract static class EnqueuerAction {
+
+ public String getName() {
+ return getClass().getName();
+ }
+
public abstract void run(Enqueuer enqueuer);
+
+ public final void run(Enqueuer enqueuer, Timing timing) {
+ timing.begin(getName());
+ run(enqueuer);
+ timing.end();
+ }
}
static class AssertAction extends EnqueuerAction {