Verify slice is finished on async task end
Bug: b/442378021
Change-Id: I820f4b450dc470b627e7b58c83872247c6c096bd
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/PrimaryMethodProcessor.java b/src/main/java/com/android/tools/r8/ir/conversion/PrimaryMethodProcessor.java
index 5e99881..05d83c4 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/PrimaryMethodProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/PrimaryMethodProcessor.java
@@ -140,6 +140,7 @@
consumer.apply(
method, processorContext.createMethodProcessingContext(method));
time.end();
+ timing.notifyThreadTimingFinished();
return time;
},
appView.options().getThreadingModule(),
diff --git a/src/main/java/com/android/tools/r8/utils/timing/PerfettoThreadTiming.java b/src/main/java/com/android/tools/r8/utils/timing/PerfettoThreadTiming.java
index 7faea71..ef3a805 100644
--- a/src/main/java/com/android/tools/r8/utils/timing/PerfettoThreadTiming.java
+++ b/src/main/java/com/android/tools/r8/utils/timing/PerfettoThreadTiming.java
@@ -10,20 +10,29 @@
private final ThreadTrack threadTrack;
+ private int depth = 0;
+
PerfettoThreadTiming(ThreadTrack threadTrack) {
this.threadTrack = threadTrack;
}
@Override
+ public void notifyThreadTimingFinished() {
+ assert depth == 0;
+ }
+
+ @Override
public Timing begin(String title) {
assert threadTrack.getId() == Thread.currentThread().getId();
threadTrack.beginSection(title);
+ depth++;
return this;
}
@Override
public Timing end() {
threadTrack.endSection();
+ depth--;
return this;
}
diff --git a/src/main/java/com/android/tools/r8/utils/timing/Timing.java b/src/main/java/com/android/tools/r8/utils/timing/Timing.java
index 0881b16..c557e65 100644
--- a/src/main/java/com/android/tools/r8/utils/timing/Timing.java
+++ b/src/main/java/com/android/tools/r8/utils/timing/Timing.java
@@ -44,6 +44,10 @@
return internalCreate(title, options, null);
}
+ public void notifyThreadTimingFinished() {
+ // Intentionally empty.
+ }
+
public abstract Timing begin(String title);
public abstract Timing end();