Disable reading of stack frames if emitting DEX

Bug: 173678465
Change-Id: I0b4f9351bf31e104cb81f1311e7b7fa67572694c
diff --git a/src/main/java/com/android/tools/r8/D8Command.java b/src/main/java/com/android/tools/r8/D8Command.java
index 84bc9b3..4559efe 100644
--- a/src/main/java/com/android/tools/r8/D8Command.java
+++ b/src/main/java/com/android/tools/r8/D8Command.java
@@ -377,7 +377,7 @@
     assert !internal.debug;
     internal.debug = getMode() == CompilationMode.DEBUG;
     internal.programConsumer = getProgramConsumer();
-    if (internal.programConsumer instanceof ClassFileConsumer) {
+    if (internal.isGeneratingClassFiles()) {
       internal.cfToCfDesugar = true;
     }
     internal.mainDexListConsumer = getMainDexListConsumer();
diff --git a/src/main/java/com/android/tools/r8/graph/CfCode.java b/src/main/java/com/android/tools/r8/graph/CfCode.java
index 05dffcf..943c978 100644
--- a/src/main/java/com/android/tools/r8/graph/CfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/CfCode.java
@@ -678,7 +678,7 @@
 
   public boolean verifyFrames(
       DexEncodedMethod method, AppView<?> appView, Origin origin, boolean applyProtoTypeChanges) {
-    if (!appView.options().testing.readInputStackMaps
+    if (!appView.options().canUseInputStackMaps()
         || appView.options().testing.disableStackMapVerification) {
       stackMapStatus = StackMapStatus.INVALID_OR_NOT_PRESENT;
       return true;
diff --git a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
index e0aace9..55ec1e3 100644
--- a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
@@ -993,7 +993,7 @@
       JarApplicationReader application, boolean reachabilitySensitive) {
     // TODO(b/166841731): We should compute our own from the compressed format.
     int parsingOptions =
-        application.options.testing.readInputStackMaps
+        application.options.canUseInputStackMaps()
             ? ClassReader.EXPAND_FRAMES
             : ClassReader.SKIP_FRAMES;
     ProguardConfiguration configuration = application.options.getProguardConfiguration();
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index dd42c7b..6368a32 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -559,6 +559,10 @@
         || getProguardConfiguration().getKeepAttributes().innerClasses;
   }
 
+  public boolean canUseInputStackMaps() {
+    return testing.readInputStackMaps ? testing.readInputStackMaps : isGeneratingClassFiles();
+  }
+
   public boolean printCfg = false;
   public String printCfgFile;
   public boolean ignoreMissingClasses = false;
diff --git a/src/test/java/com/android/tools/r8/cf/stackmap/StackMapVerificationNoFrameForHandlerTest.java b/src/test/java/com/android/tools/r8/cf/stackmap/StackMapVerificationNoFrameForHandlerTest.java
index 625a3dc..7e8c85c 100644
--- a/src/test/java/com/android/tools/r8/cf/stackmap/StackMapVerificationNoFrameForHandlerTest.java
+++ b/src/test/java/com/android/tools/r8/cf/stackmap/StackMapVerificationNoFrameForHandlerTest.java
@@ -76,6 +76,7 @@
                 : transformer(MainDump.dump(), Reference.classFromClass(Main.class))
                     .stripFrames("main")
                     .transform())
+        .addOptionsModification(options -> options.testing.readInputStackMaps = true)
         .setMinApi(parameters.getApiLevel())
         .compileWithExpectedDiagnostics(this::verifyWarningsRegardingStackMap)
         .run(parameters.getRuntime(), Main.class)
@@ -94,6 +95,7 @@
         .addKeepMainRule(Main.class)
         .setMinApi(parameters.getApiLevel())
         .allowDiagnosticWarningMessages(!includeFrameInHandler)
+        .addOptionsModification(options -> options.testing.readInputStackMaps = true)
         .compileWithExpectedDiagnostics(this::verifyWarningsRegardingStackMap)
         .run(parameters.getRuntime(), Main.class)
         .assertSuccessWithOutputLines(EXPECTED_OUTPUT);
diff --git a/src/test/java/com/android/tools/r8/cfmethodgeneration/MethodGenerationBase.java b/src/test/java/com/android/tools/r8/cfmethodgeneration/MethodGenerationBase.java
index 164259f..87e0e89 100644
--- a/src/test/java/com/android/tools/r8/cfmethodgeneration/MethodGenerationBase.java
+++ b/src/test/java/com/android/tools/r8/cfmethodgeneration/MethodGenerationBase.java
@@ -94,6 +94,7 @@
 
   private void readMethodTemplatesInto(CfCodePrinter codePrinter) throws IOException {
     InternalOptions options = new InternalOptions();
+    options.testing.readInputStackMaps = true;
     JarClassFileReader reader =
         new JarClassFileReader(
             new JarApplicationReader(options),