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,
},
]