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();