Merge commit '165906975b0e8d0aa7eeccd975786d07c689d6dd' into dev-release
diff --git a/src/main/java/com/android/tools/r8/ir/synthetic/ForwardMethodBuilder.java b/src/main/java/com/android/tools/r8/ir/synthetic/ForwardMethodBuilder.java
index 0c6b359..48536cc 100644
--- a/src/main/java/com/android/tools/r8/ir/synthetic/ForwardMethodBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/synthetic/ForwardMethodBuilder.java
@@ -171,15 +171,17 @@
       maxLocals += 1;
     }
     DexType[] sourceParameters = getSourceParameters();
-    for (int i = 0;
-        i < sourceParameters.length - BooleanUtils.intValue(sourceMethodHasExtraUnusedParameter);
-        i++) {
+    for (int i = 0; i < sourceParameters.length; i++) {
       DexType parameter = sourceParameters[i];
       ValueType parameterType = ValueType.fromDexType(parameter);
-      instructions.add(new CfLoad(parameterType, maxLocals));
+      if (!(sourceMethodHasExtraUnusedParameter && i == sourceParameters.length - 1)) {
+        // We do not need to load the last parameter if it is unused.
+        // We still need to increase the maxStack/maxLocals values for the method to verify.
+        instructions.add(new CfLoad(parameterType, maxLocals));
+        maybeInsertArgumentCast(i, parameter, instructions);
+      }
       maxStack += parameterType.requiredRegisters();
       maxLocals += parameterType.requiredRegisters();
-      maybeInsertArgumentCast(i, parameter, instructions);
     }
     instructions.add(new CfInvoke(getInvokeOpcode(), targetMethod, isInterface));
     if (!targetMethod.getReturnType().isVoidType()) {
diff --git a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
index c6612c5..188e749 100644
--- a/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
+++ b/src/main/java/com/android/tools/r8/repackaging/Repackaging.java
@@ -428,9 +428,7 @@
       // Ensure that the generated name is unique.
       DexType finalRepackagedDexType = repackagedDexType;
       for (int i = 1; isRepackageTypeUsed(finalRepackagedDexType, mappings, appView); i++) {
-        finalRepackagedDexType =
-            repackagedDexType.addSuffix(
-                Character.toString(INNER_CLASS_SEPARATOR) + i, dexItemFactory);
+        finalRepackagedDexType = repackagedDexType.addSuffix(i + "", dexItemFactory);
       }
       return finalRepackagedDexType;
     }
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/FullNestOnProgramPathTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/FullNestOnProgramPathTest.java
index 68f3fcf..58cf498 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/FullNestOnProgramPathTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/FullNestOnProgramPathTest.java
@@ -32,7 +32,6 @@
 import com.google.common.collect.ImmutableList;
 import java.util.function.BiFunction;
 import java.util.function.Function;
-import org.junit.Assume;
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -54,6 +53,7 @@
         .withCfRuntimesStartingFromIncluding(CfVm.JDK11)
         .withDexRuntimes()
         .withApiLevelsStartingAtIncluding(apiLevelWithInvokeCustomSupport())
+        .enableApiLevelsForCf()
         .build();
   }
 
@@ -120,9 +120,8 @@
 
   @Test
   public void testSingleNestD8() throws Exception {
-    Assume.assumeTrue(parameters.isDexRuntime());
     for (String nestID : NEST_IDS) {
-      testForD8()
+      testForD8(parameters.getBackend())
           .setMinApi(parameters.getApiLevel())
           .addProgramFiles(classesOfNest(nestID))
           .compile()
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/MinimumNumberOfBridgesGenerated.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/MinimumNumberOfBridgesGenerated.java
index 47320d8..ffaca18 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/MinimumNumberOfBridgesGenerated.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/MinimumNumberOfBridgesGenerated.java
@@ -42,6 +42,7 @@
         .withDexRuntime(DexVm.Version.first())
         .withDexRuntime(DexVm.Version.last())
         .withApiLevelsStartingAtIncluding(apiLevelWithInvokeCustomSupport())
+        .enableApiLevelsForCf()
         .build();
   }
 
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesUpdateTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesUpdateTest.java
index 2abe133..00575cd 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesUpdateTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestAttributesUpdateTest.java
@@ -43,7 +43,10 @@
 
   @Parameters(name = "{0}")
   public static TestParametersCollection data() {
-    return getTestParameters().withCfRuntimesStartingFromIncluding(CfVm.JDK11).build();
+    return getTestParameters()
+        .withCfRuntimesStartingFromIncluding(CfVm.JDK11)
+        .withAllApiLevelsAlsoForCf()
+        .build();
   }
 
   @Test
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestClassMergingTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestClassMergingTest.java
index 9f41a17..3e8fc2a 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestClassMergingTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestClassMergingTest.java
@@ -44,6 +44,7 @@
   public static TestParametersCollection data() {
     return getTestParameters()
         .withCfRuntimesStartingFromIncluding(CfVm.JDK11)
+        .withAllApiLevelsAlsoForCf()
         .build();
   }
 
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java
index fd874a1..2533da9 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestCompilationExceptionTest.java
@@ -32,7 +32,6 @@
 import java.nio.file.Path;
 import java.util.List;
 import org.hamcrest.Matcher;
-import org.junit.Assume;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -54,12 +53,12 @@
         .withDexRuntime(DexVm.Version.first())
         .withDexRuntime(DexVm.Version.last())
         .withApiLevelsStartingAtIncluding(apiLevelWithInvokeCustomSupport())
+        .enableApiLevelsForCf()
         .build();
   }
 
   @Test
   public void testD8() throws Exception {
-    Assume.assumeTrue(parameters.isDexRuntime());
     testMissingNestHostError(true);
     testIncompleteNestError(true);
   }
@@ -87,7 +86,9 @@
             .map(name -> CLASSES_PATH.resolve(name + CLASS_EXTENSION))
             .collect(toList());
     if (d8) {
-      return testForD8().setMinApi(parameters.getApiLevel()).addProgramFiles(matchingClasses);
+      return testForD8(parameters.getBackend())
+          .setMinApi(parameters.getApiLevel())
+          .addProgramFiles(matchingClasses);
     } else {
       return testForR8(parameters.getBackend())
           .noTreeShaking()
@@ -109,10 +110,11 @@
           .compileWithExpectedDiagnostics(
               diagnostics -> {
                 if (d8) {
-                  diagnostics
-                      .assertOnlyErrors()
-                      .assertErrorsMatch(
-                          diagnosticType(MissingNestHostNestDesugarDiagnostic.class));
+                  if (parameters.getBackend().isDex()) {
+                    diagnostics.assertOnlyErrors();
+                  }
+                  diagnostics.assertErrorsMatch(
+                      diagnosticType(MissingNestHostNestDesugarDiagnostic.class));
 
                   MissingNestHostNestDesugarDiagnostic diagnostic =
                       (MissingNestHostNestDesugarDiagnostic) diagnostics.getErrors().get(0);
@@ -148,9 +150,11 @@
           .compileWithExpectedDiagnostics(
               diagnostics -> {
                 if (d8) {
-                  diagnostics
-                      .assertOnlyErrors()
-                      .assertErrorsMatch(diagnosticType(IncompleteNestNestDesugarDiagnosic.class));
+                  if (parameters.getBackend().isDex()) {
+                    diagnostics.assertOnlyErrors();
+                  }
+                  diagnostics.assertErrorsMatch(
+                      diagnosticType(IncompleteNestNestDesugarDiagnosic.class));
 
                   IncompleteNestNestDesugarDiagnosic diagnostic =
                       (IncompleteNestNestDesugarDiagnosic) diagnostics.getErrors().get(0);
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java
index b216639..04eac5e 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestConstructorRemovedArgTest.java
@@ -35,6 +35,7 @@
         .withDexRuntime(DexVm.Version.first())
         .withDexRuntime(DexVm.Version.last())
         .withApiLevelsStartingAtIncluding(apiLevelWithInvokeCustomSupport())
+        .enableApiLevelsForCf()
         .build();
   }
 
diff --git a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestMethodInlinedTest.java b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestMethodInlinedTest.java
index 373f6fc..726f391 100644
--- a/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestMethodInlinedTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/nestaccesscontrol/NestMethodInlinedTest.java
@@ -36,7 +36,10 @@
 
   @Parameters(name = "{0}")
   public static TestParametersCollection data() {
-    return getTestParameters().withCfRuntimesStartingFromIncluding(CfVm.JDK11).build();
+    return getTestParameters()
+        .withCfRuntimesStartingFromIncluding(CfVm.JDK11)
+        .withAllApiLevelsAlsoForCf()
+        .build();
   }
 
   @Test
diff --git a/tools/internal_test.py b/tools/internal_test.py
index 48409c0..e267763 100755
--- a/tools/internal_test.py
+++ b/tools/internal_test.py
@@ -89,7 +89,8 @@
         'find-xmx-min': 128,
         'find-xmx-max': 1024,
         'find-xmx-range': 16,
-        'oom-threshold': 267,
+        # TODO(b/183371778): Figure out why the need to bump this
+        'oom-threshold': 329,
     },
 ]