Revert "Only parse mapping file once for all resources"

This reverts commit 96fa290ff7b22a54437d8d2494b2e1333ca34145.

Reason for revert: Time increased on the bots.

Change-Id: I2ad584ab0e2d685b675d7e8480dd684754501c02
diff --git a/src/main/java/com/android/tools/r8/Disassemble.java b/src/main/java/com/android/tools/r8/Disassemble.java
index 1e1fffb..8c66ba5 100644
--- a/src/main/java/com/android/tools/r8/Disassemble.java
+++ b/src/main/java/com/android/tools/r8/Disassemble.java
@@ -12,7 +12,6 @@
 import com.android.tools.r8.naming.ClassNameMapper;
 import com.android.tools.r8.origin.CommandLineOrigin;
 import com.android.tools.r8.utils.AndroidApp;
-import com.android.tools.r8.utils.Box;
 import com.android.tools.r8.utils.ConsumerUtils;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.StringDiagnostic;
@@ -29,7 +28,6 @@
 import java.util.Collections;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
 import java.util.function.Consumer;
 
 public class Disassemble {
@@ -247,11 +245,9 @@
       throws IOException, ExecutionException {
     AndroidApp app = command.getInputApp();
     InternalOptions options = command.getInternalOptions();
-    Box<Future<ClassNameMapper>> readMapFuture = new Box<>();
     try (OutputWriter outputWriter = getOutputWriter(command)) {
       for (ProgramResource computeAllProgramResource : app.computeAllProgramResources()) {
-        disassembleResource(
-            command, outputWriter, computeAllProgramResource, readMapFuture, options);
+        disassembleResource(command, outputWriter, computeAllProgramResource, options);
       }
     } catch (Exception e) {
       throw new RuntimeException(e);
@@ -274,7 +270,6 @@
       DisassembleCommand command,
       OutputWriter outputWriter,
       ProgramResource programResource,
-      Box<Future<ClassNameMapper>> readMapFuture,
       InternalOptions options)
       throws IOException {
     ExecutorService executor = ThreadUtils.getExecutorService(options);
@@ -285,8 +280,7 @@
                       .addProgramResourceProvider(() -> Collections.singletonList(programResource))
                       .build(),
                   options,
-                  Timing.empty(),
-                  readMapFuture)
+                  Timing.empty())
               .read(command.proguardMap, executor);
       DexByteCodeWriter writer =
           command.useSmali()
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationReader.java b/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
index f2d4053..10acb93 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationReader.java
@@ -7,7 +7,6 @@
 import static com.android.tools.r8.graph.ClassKind.LIBRARY;
 import static com.android.tools.r8.graph.ClassKind.PROGRAM;
 import static com.android.tools.r8.utils.ExceptionUtils.unwrapExecutionException;
-import static com.android.tools.r8.utils.ExceptionUtils.unwrapInterruptedException;
 
 import com.android.tools.r8.ClassFileResourceProvider;
 import com.android.tools.r8.DataResourceProvider;
@@ -39,7 +38,6 @@
 import com.android.tools.r8.shaking.MainDexInfo;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.AndroidApp;
-import com.android.tools.r8.utils.Box;
 import com.android.tools.r8.utils.ClassProvider;
 import com.android.tools.r8.utils.ClasspathClassCollection;
 import com.android.tools.r8.utils.DescriptorUtils;
@@ -57,7 +55,6 @@
 import java.util.Collection;
 import java.util.List;
 import java.util.Queue;
-import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
@@ -71,7 +68,6 @@
   private final DexItemFactory itemFactory;
   private final Timing timing;
   private final AndroidApp inputApp;
-  private final Box<Future<ClassNameMapper>> readMap;
 
   private DexApplicationReadFlags flags;
 
@@ -80,19 +76,10 @@
   }
 
   public ApplicationReader(AndroidApp inputApp, InternalOptions options, Timing timing) {
-    this(inputApp, options, timing, new Box<>());
-  }
-
-  public ApplicationReader(
-      AndroidApp inputApp,
-      InternalOptions options,
-      Timing timing,
-      Box<Future<ClassNameMapper>> readMap) {
     this.options = options;
     itemFactory = options.itemFactory;
     this.timing = timing;
     this.inputApp = inputApp;
-    this.readMap = readMap;
   }
 
   public LazyLoadedDexApplication read() throws IOException {
@@ -149,14 +136,10 @@
       // (b) some of the class file resources don't provide information
       //     about class descriptor.
       // TODO: try and preload less classes.
-      readProguardMap(proguardMap, executorService);
+      readProguardMap(proguardMap, builder, executorService, futures);
       ClassReader classReader = new ClassReader(executorService, futures);
       classReader.readSources();
       ThreadUtils.awaitFutures(futures);
-      ClassNameMapper mapper = readMap.get().get();
-      if (mapper != null) {
-        builder.setProguardMap(mapper);
-      }
       flags = classReader.getDexApplicationReadFlags();
       builder.setFlags(flags);
       classReader.initializeLazyClassCollection(builder);
@@ -166,8 +149,6 @@
           builder.addDataResourceProvider(dataResourceProvider);
         }
       }
-    } catch (InterruptedException e) {
-      throw unwrapInterruptedException(e);
     } catch (ExecutionException e) {
       throw unwrapExecutionException(e);
     } catch (ResourceException e) {
@@ -284,34 +265,31 @@
             + "'.");
   }
 
-  private void readProguardMap(StringResource map, ExecutorService executorService) {
+  private void readProguardMap(
+      StringResource map,
+      DexApplication.Builder<?> builder,
+      ExecutorService executorService,
+      List<Future<?>> futures) {
     // Read the Proguard mapping file in parallel with DexCode and DexProgramClass items.
-    if (!readMap.isSet()) {
-      synchronized (readMap) {
-        if (readMap.isSet()) {
-          return;
-        }
-        if (map == null) {
-          readMap.set(CompletableFuture.completedFuture(null));
-          return;
-        }
-        readMap.set(
-            executorService.submit(
-                () -> {
-                  try {
-                    return ClassNameMapper.mapperFromString(
-                        map.getString(),
+    if (map == null) {
+      return;
+    }
+    futures.add(
+        executorService.submit(
+            () -> {
+              try {
+                String content = map.getString();
+                builder.setProguardMap(
+                    ClassNameMapper.mapperFromString(
+                        content,
                         options.reporter,
                         false,
                         options.testing.enableExperimentalMapFileVersion,
-                        false);
-                  } catch (IOException | ResourceException e) {
-                    throw new CompilationError(
-                        "Failure to read proguard map file", e, map.getOrigin());
-                  }
-                }));
-      }
-    }
+                        false));
+              } catch (IOException | ResourceException e) {
+                throw new CompilationError("Failure to read proguard map file", e, map.getOrigin());
+              }
+            }));
   }
 
   private final class ClassReader {
diff --git a/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java b/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
index 8cb08c0..ef5c3ca 100644
--- a/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
+++ b/src/main/java/com/android/tools/r8/utils/ExceptionUtils.java
@@ -221,11 +221,6 @@
     return new RuntimeException(executionException);
   }
 
-  public static RuntimeException unwrapInterruptedException(
-      InterruptedException interruptedException) {
-    return new RuntimeException(interruptedException);
-  }
-
   public static void withOriginAttachmentHandler(Origin origin, Runnable action) {
     withOriginAndPositionAttachmentHandler(origin, Position.UNKNOWN, action);
   }