Update to use the capacity and unchecked task collection methods

Bug: b/304992619
Change-Id: I4a197597fc171ec31bde8b5b8ed579bb47664d20
diff --git a/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java b/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java
index dc79a46..35e68e9 100644
--- a/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java
+++ b/src/main/java/com/android/tools/r8/dex/InheritanceClassInDexDistributor.java
@@ -538,8 +538,7 @@
 
   private void updateGroupsNumberOfIds(List<ClassGroup> groups) {
     TaskCollection<?> updateIdsTasks =
-        new TaskCollection<>(
-            appView.options().getThreadingModule(), executorService, groups.size());
+        new TaskCollection<>(appView.options(), executorService, groups.size());
     try {
       for (ClassGroup group : groups) {
         updateIdsTasks.submit(group::updateNumbersOfIds);
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/D8MethodProcessor.java b/src/main/java/com/android/tools/r8/ir/conversion/D8MethodProcessor.java
index 50261b2..6b13747 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/D8MethodProcessor.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/D8MethodProcessor.java
@@ -86,18 +86,14 @@
       // The non-synthetic holder is not scheduled. It will be processed once holder is scheduled.
       return;
     }
-    try {
-      nonTerminalTasks.submit(
-          () ->
-              converter.rewriteNonDesugaredCode(
-                  method,
-                  eventConsumer,
-                  OptimizationFeedbackIgnore.getInstance(),
-                  this,
-                  processorContext.createMethodProcessingContext(method)));
-    } catch (ExecutionException e) {
-      throw new RuntimeException(e);
-    }
+    nonTerminalTasks.submitUnchecked(
+        () ->
+            converter.rewriteNonDesugaredCode(
+                method,
+                eventConsumer,
+                OptimizationFeedbackIgnore.getInstance(),
+                this,
+                processorContext.createMethodProcessingContext(method)));
   }
 
   @Override
@@ -112,18 +108,14 @@
     if (method.getDefinition().isAbstract()) {
       return;
     }
-    try {
-      terminalTasks.submit(
-          () ->
-              converter.rewriteDesugaredCode(
-                  method,
-                  OptimizationFeedbackIgnore.getInstance(),
-                  this,
-                  processorContext.createMethodProcessingContext(method),
-                  MethodConversionOptions.forD8(converter.appView)));
-    } catch (ExecutionException e) {
-      throw new RuntimeException(e);
-    }
+    terminalTasks.submitUnchecked(
+        () ->
+            converter.rewriteDesugaredCode(
+                method,
+                OptimizationFeedbackIgnore.getInstance(),
+                this,
+                processorContext.createMethodProcessingContext(method),
+                MethodConversionOptions.forD8(converter.appView)));
   }
 
   public void scheduleDesugaredMethodsForProcessing(Iterable<ProgramMethod> methods) {
diff --git a/src/main/java/com/android/tools/r8/threading/TaskCollection.java b/src/main/java/com/android/tools/r8/threading/TaskCollection.java
index 8ef8168..2316ec9 100644
--- a/src/main/java/com/android/tools/r8/threading/TaskCollection.java
+++ b/src/main/java/com/android/tools/r8/threading/TaskCollection.java
@@ -35,7 +35,12 @@
   }
 
   public TaskCollection(InternalOptions options, ExecutorService executorService) {
-    this(options.getThreadingModule(), executorService, -1);
+    this(options, executorService, -1);
+  }
+
+  public TaskCollection(
+      InternalOptions options, ExecutorService executorService, int initialCapacity) {
+    this(options.getThreadingModule(), executorService, initialCapacity);
   }
 
   /**
diff --git a/src/main/java/com/android/tools/r8/utils/ThreadUtils.java b/src/main/java/com/android/tools/r8/utils/ThreadUtils.java
index bfab6da..9c8f6e7 100644
--- a/src/main/java/com/android/tools/r8/utils/ThreadUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/ThreadUtils.java
@@ -132,13 +132,7 @@
     TaskCollection<R> tasks = new TaskCollection<>(threadingModule, executorService);
     try {
       items.forEachWithIndex(
-          (index, item) -> {
-            try {
-              tasks.submit(() -> consumer.apply(item, index));
-            } catch (ExecutionException e) {
-              throw new UncheckedExecutionException(e);
-            }
-          });
+          (index, item) -> tasks.submitUnchecked(() -> consumer.apply(item, index)));
     } catch (UncheckedExecutionException e) {
       throw e.rethrow();
     }
diff --git a/src/main/java/com/android/tools/r8/utils/threads/ThreadTaskUtils.java b/src/main/java/com/android/tools/r8/utils/threads/ThreadTaskUtils.java
index e65e4d9..f239b67 100644
--- a/src/main/java/com/android/tools/r8/utils/threads/ThreadTaskUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/threads/ThreadTaskUtils.java
@@ -23,7 +23,7 @@
       ThreadTask... tasks)
       throws ExecutionException {
     assert tasks.length > 0;
-    TaskCollection<?> taskCollection = new TaskCollection<>(options, executorService);
+    TaskCollection<?> taskCollection = new TaskCollection<>(options, executorService, tasks.length);
     if (timingMerger.isEmpty()) {
       for (ThreadTask task : tasks) {
         if (task.shouldRun()) {