Make the CF frontend default for CodeInspector.
Also change SynchronizedNoopTestRunner from using JarCode to CfCode.
Change-Id: I9efa3015be025fe523ec30a8e3f1ed38ee2cd3b1
diff --git a/src/test/java/com/android/tools/r8/cf/IdenticalCatchHandlerTest.java b/src/test/java/com/android/tools/r8/cf/IdenticalCatchHandlerTest.java
index 450e6d0..55ec4f1 100644
--- a/src/test/java/com/android/tools/r8/cf/IdenticalCatchHandlerTest.java
+++ b/src/test/java/com/android/tools/r8/cf/IdenticalCatchHandlerTest.java
@@ -63,7 +63,7 @@
}
private int countCatchHandlers(AndroidApp inputApp) throws Exception {
- CodeInspector inspector = new CodeInspector(inputApp, o -> o.enableCfFrontend = true);
+ CodeInspector inspector = new CodeInspector(inputApp);
DexClass dexClass = inspector.clazz(TestClass.class).getDexClass();
Code code = dexClass.virtualMethods()[0].getCode();
if (code.isCfCode()) {
diff --git a/src/test/java/com/android/tools/r8/cf/LambdaTestRunner.java b/src/test/java/com/android/tools/r8/cf/LambdaTestRunner.java
index 7db1d61..632d0b9 100644
--- a/src/test/java/com/android/tools/r8/cf/LambdaTestRunner.java
+++ b/src/test/java/com/android/tools/r8/cf/LambdaTestRunner.java
@@ -69,7 +69,7 @@
private static CfInvokeDynamic findFirstInMethod(AndroidApp app) throws Exception {
String returnType = "void";
- CodeInspector inspector = new CodeInspector(app, o -> o.enableCfFrontend = true);
+ CodeInspector inspector = new CodeInspector(app);
List<String> args = Collections.singletonList(String[].class.getTypeName());
DexEncodedMethod method = inspector.clazz(CLASS).method(returnType, METHOD, args).getMethod();
CfCode code = method.getCode().asCfCode();
diff --git a/src/test/java/com/android/tools/r8/cf/SynchronizedNoopTestRunner.java b/src/test/java/com/android/tools/r8/cf/SynchronizedNoopTestRunner.java
index e4f9249..84ac87c 100644
--- a/src/test/java/com/android/tools/r8/cf/SynchronizedNoopTestRunner.java
+++ b/src/test/java/com/android/tools/r8/cf/SynchronizedNoopTestRunner.java
@@ -11,18 +11,16 @@
import com.android.tools.r8.R8;
import com.android.tools.r8.R8Command;
import com.android.tools.r8.ToolHelper;
+import com.android.tools.r8.cf.code.CfInstruction;
+import com.android.tools.r8.cf.code.CfMonitor;
+import com.android.tools.r8.graph.CfCode;
import com.android.tools.r8.graph.DexEncodedMethod;
-import com.android.tools.r8.graph.JarCode;
import com.android.tools.r8.origin.Origin;
import com.android.tools.r8.utils.AndroidAppConsumers;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
-import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
import org.junit.Test;
-import org.objectweb.asm.Opcodes;
-import org.objectweb.asm.tree.AbstractInsnNode;
-import org.objectweb.asm.tree.InsnList;
-import org.objectweb.asm.tree.MethodNode;
public class SynchronizedNoopTestRunner {
private byte[] data;
@@ -40,21 +38,9 @@
CodeInspector inspector = new CodeInspector(a.build());
DexEncodedMethod method =
inspector.clazz(CLASS).method("void", "noop", Collections.emptyList()).getMethod();
- ArrayList<AbstractInsnNode> insns = new ArrayList<>();
- JarCode jarCode = method.getCode().asJarCode();
- MethodNode node = jarCode.getNode();
- assert node != null;
- InsnList asmInsns = node.instructions;
- for (int i = 0; i < asmInsns.size(); i++) {
- insns.add(asmInsns.get(i));
- }
- boolean hasMonitor =
- insns
- .stream()
- .anyMatch(
- insn ->
- insn.getOpcode() == Opcodes.MONITORENTER
- || insn.getOpcode() == Opcodes.MONITOREXIT);
+ CfCode cfCode = method.getCode().asCfCode();
+ List<CfInstruction> insns = cfCode.getInstructions();
+ boolean hasMonitor = insns.stream().anyMatch(insn -> insn instanceof CfMonitor);
assertFalse(hasMonitor);
}
}
diff --git a/src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java b/src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java
index 6322840..2a56ef5 100644
--- a/src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/ClassMergingTest.java
@@ -866,8 +866,8 @@
MethodSubject method = clazz.method("void", "main", ImmutableList.of("java.lang.String[]"));
assertThat(method, isPresent());
assertThat(
- method.getMethod().getCode().asJarCode().toString(),
- containsString("INVOKEINTERFACE classmerging/MergeDefaultMethodIntoClassTest$A.f"));
+ method.getMethod().getCode().asCfCode().toString(),
+ containsString("invokeinterface classmerging.MergeDefaultMethodIntoClassTest$A.f()V"));
runTestOnInput(main, app, preservedClassNames::contains, getProguardConfig(JAVA8_EXAMPLE_KEEP));
}
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/MemberValuePropagationTest.java b/src/test/java/com/android/tools/r8/ir/optimize/MemberValuePropagationTest.java
index e727904..d5b88cb 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/MemberValuePropagationTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/MemberValuePropagationTest.java
@@ -62,7 +62,7 @@
@Test
public void testWriteOnlyField_putObject_gone() throws Exception {
List<Path> processedApp = runR8(EXAMPLE_KEEP);
- CodeInspector inspector = new CodeInspector(processedApp, null, o -> o.enableCfFrontend = true);
+ CodeInspector inspector = new CodeInspector(processedApp);
ClassSubject clazz = inspector.clazz(QUALIFIED_CLASS_NAME);
clazz.forAllMethods(
methodSubject -> {
@@ -77,7 +77,7 @@
@Test
public void testWriteOnlyField_dontoptimize() throws Exception {
List<Path> processedApp = runR8(DONT_OPTIMIZE);
- CodeInspector inspector = new CodeInspector(processedApp, null, o -> o.enableCfFrontend = true);
+ CodeInspector inspector = new CodeInspector(processedApp);
ClassSubject clazz = inspector.clazz(QUALIFIED_CLASS_NAME);
assert backend == Backend.DEX || backend == Backend.CF;
clazz.forAllMethods(
diff --git a/src/test/java/com/android/tools/r8/memberrebinding/CompositionalLenseTest.java b/src/test/java/com/android/tools/r8/memberrebinding/CompositionalLenseTest.java
index 4903304..517bd03 100644
--- a/src/test/java/com/android/tools/r8/memberrebinding/CompositionalLenseTest.java
+++ b/src/test/java/com/android/tools/r8/memberrebinding/CompositionalLenseTest.java
@@ -93,7 +93,7 @@
options.enableInlining = false;
options.enableClassMerging = false;
});
- CodeInspector codeInspector = new CodeInspector(processedApp, o -> o.enableCfFrontend = true);
+ CodeInspector codeInspector = new CodeInspector(processedApp);
ClassSubject classSubject = codeInspector.clazz(TestMain.class);
assertThat(classSubject, isPresent());
MethodSubject methodSubject = classSubject.method(CodeInspector.MAIN);
diff --git a/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingTest.java b/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingTest.java
index bf63d70..6fccb9a 100644
--- a/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingTest.java
+++ b/src/test/java/com/android/tools/r8/memberrebinding/MemberRebindingTest.java
@@ -388,7 +388,7 @@
originalInspection.accept(inspector);
}
- CodeInspector inspector = new CodeInspector(processed, null, o -> o.enableCfFrontend = true);
+ CodeInspector inspector = new CodeInspector(processed);
inspection.accept(inspector);
// We don't run Art, as the test R8RunExamplesTest already does that.
diff --git a/src/test/java/com/android/tools/r8/movestringconstants/MoveStringConstantsTest.java b/src/test/java/com/android/tools/r8/movestringconstants/MoveStringConstantsTest.java
index 6dd02c6..a66c222 100644
--- a/src/test/java/com/android/tools/r8/movestringconstants/MoveStringConstantsTest.java
+++ b/src/test/java/com/android/tools/r8/movestringconstants/MoveStringConstantsTest.java
@@ -62,12 +62,7 @@
// setting (5) is just too small.
options.inliningInstructionLimit = 10;
});
- inspection.accept(
- new CodeInspector(
- app,
- options -> {
- options.enableCfFrontend = true;
- }));
+ inspection.accept(new CodeInspector(app));
if (backend == Backend.DEX) {
// Run on Art to check generated code against verifier.
diff --git a/src/test/java/com/android/tools/r8/naming/ApplyMappingTest.java b/src/test/java/com/android/tools/r8/naming/ApplyMappingTest.java
index aaecd58..ee25918 100644
--- a/src/test/java/com/android/tools/r8/naming/ApplyMappingTest.java
+++ b/src/test/java/com/android/tools/r8/naming/ApplyMappingTest.java
@@ -213,11 +213,7 @@
private static CodeInspector createDexInspector(AndroidApp outputApp)
throws IOException, ExecutionException {
- return new CodeInspector(
- outputApp,
- o -> {
- o.enableCfFrontend = true;
- });
+ return new CodeInspector(outputApp);
}
@Test
diff --git a/src/test/java/com/android/tools/r8/naming/IdentifierMinifierTest.java b/src/test/java/com/android/tools/r8/naming/IdentifierMinifierTest.java
index 73cdaaf..ba7d491 100644
--- a/src/test/java/com/android/tools/r8/naming/IdentifierMinifierTest.java
+++ b/src/test/java/com/android/tools/r8/naming/IdentifierMinifierTest.java
@@ -17,8 +17,8 @@
import com.android.tools.r8.utils.AndroidApp;
import com.android.tools.r8.utils.ListUtils;
import com.android.tools.r8.utils.codeinspector.ClassSubject;
-import com.android.tools.r8.utils.codeinspector.ConstStringInstructionSubject;
import com.android.tools.r8.utils.codeinspector.CodeInspector;
+import com.android.tools.r8.utils.codeinspector.ConstStringInstructionSubject;
import com.android.tools.r8.utils.codeinspector.FoundMethodSubject;
import com.android.tools.r8.utils.codeinspector.InstructionSubject;
import com.android.tools.r8.utils.codeinspector.InstructionSubject.JumboStringMode;
@@ -89,12 +89,7 @@
@Test
public void identiferMinifierTest() throws Exception {
- CodeInspector codeInspector =
- new CodeInspector(
- processedApp,
- options -> {
- options.enableCfFrontend = true;
- });
+ CodeInspector codeInspector = new CodeInspector(processedApp);
inspection.accept(codeInspector);
}
diff --git a/src/test/java/com/android/tools/r8/neverreturnsnormally/NeverReturnsNormallyTest.java b/src/test/java/com/android/tools/r8/neverreturnsnormally/NeverReturnsNormallyTest.java
index f401f6a..e6589d5a 100644
--- a/src/test/java/com/android/tools/r8/neverreturnsnormally/NeverReturnsNormallyTest.java
+++ b/src/test/java/com/android/tools/r8/neverreturnsnormally/NeverReturnsNormallyTest.java
@@ -72,13 +72,7 @@
Origin.unknown());
AndroidApp app =
ToolHelper.runR8(builder.build(), opts -> opts.enableClassInlining = enableClassInliner);
- inspection.accept(
- new CodeInspector(
- app,
- options -> {
- options.enableCfFrontend = true;
- }),
- mode);
+ inspection.accept(new CodeInspector(app), mode);
if (backend == Backend.DEX) {
// Run on Art to check generated code against verifier.
diff --git a/src/test/java/com/android/tools/r8/regress/b69825683/Regress69825683Test.java b/src/test/java/com/android/tools/r8/regress/b69825683/Regress69825683Test.java
index 911ceb7..a09b9a4 100644
--- a/src/test/java/com/android/tools/r8/regress/b69825683/Regress69825683Test.java
+++ b/src/test/java/com/android/tools/r8/regress/b69825683/Regress69825683Test.java
@@ -59,7 +59,7 @@
.addLibraryFiles(ToolHelper.getJava8RuntimeJar());
}
AndroidApp app = ToolHelper.runR8(builder.build(), o -> o.enableClassInlining = false);
- CodeInspector inspector = new CodeInspector(app, o -> o.enableCfFrontend = true);
+ CodeInspector inspector = new CodeInspector(app);
List<FoundClassSubject> classes = inspector.allClasses();
// Check that the synthetic class is still present.
@@ -103,7 +103,7 @@
.addLibraryFiles(ToolHelper.getJava8RuntimeJar());
}
AndroidApp app = ToolHelper.runR8(builder.build(), o -> o.enableClassInlining = false);
- CodeInspector inspector = new CodeInspector(app, o -> o.enableCfFrontend = true);
+ CodeInspector inspector = new CodeInspector(app);
List<FoundClassSubject> classes = inspector.allClasses();
// Check that the synthetic class is still present.
diff --git a/src/test/java/com/android/tools/r8/rewrite/switchmaps/RewriteSwitchMapsTest.java b/src/test/java/com/android/tools/r8/rewrite/switchmaps/RewriteSwitchMapsTest.java
index ee99b38..bfc8154 100644
--- a/src/test/java/com/android/tools/r8/rewrite/switchmaps/RewriteSwitchMapsTest.java
+++ b/src/test/java/com/android/tools/r8/rewrite/switchmaps/RewriteSwitchMapsTest.java
@@ -61,7 +61,7 @@
.setProgramConsumer(emptyConsumer(backend))
.build();
AndroidApp result = ToolHelper.runR8(command);
- CodeInspector inspector = new CodeInspector(result, o -> o.enableCfFrontend = true);
+ CodeInspector inspector = new CodeInspector(result);
Assert.assertFalse(inspector.clazz(SWITCHMAP_CLASS_NAME).isPresent());
}
}
diff --git a/src/test/java/com/android/tools/r8/shaking/proxy/ProxiesTest.java b/src/test/java/com/android/tools/r8/shaking/proxy/ProxiesTest.java
index b3e6367..004acc1 100644
--- a/src/test/java/com/android/tools/r8/shaking/proxy/ProxiesTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/proxy/ProxiesTest.java
@@ -78,7 +78,7 @@
.addLibraryFiles(ToolHelper.getJava8RuntimeJar());
}
AndroidApp app = ToolHelper.runR8(builder.build(), o -> o.enableDevirtualization = false);
- inspection.accept(new CodeInspector(app, o -> o.enableCfFrontend = true));
+ inspection.accept(new CodeInspector(app));
String result = backend == Backend.DEX ? runOnArt(app, mainClass) : runOnJava(app, mainClass);
if (ToolHelper.isWindows()) {
result = result.replace(System.lineSeparator(), "\n");
diff --git a/src/test/java/com/android/tools/r8/shaking/testrules/ForceInlineTest.java b/src/test/java/com/android/tools/r8/shaking/testrules/ForceInlineTest.java
index d12f41a..f37d6c6 100644
--- a/src/test/java/com/android/tools/r8/shaking/testrules/ForceInlineTest.java
+++ b/src/test/java/com/android/tools/r8/shaking/testrules/ForceInlineTest.java
@@ -61,7 +61,7 @@
.addLibraryFiles(library);
ToolHelper.allowTestProguardOptions(builder);
builder.addProguardConfiguration(proguardConfiguration, Origin.unknown());
- return new CodeInspector(ToolHelper.runR8(builder.build(), o -> o.enableCfFrontend = true));
+ return new CodeInspector(ToolHelper.runR8(builder.build()));
}
@Test
diff --git a/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java b/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
index 6fbbb20..bc31615 100644
--- a/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
+++ b/src/test/java/com/android/tools/r8/utils/codeinspector/CodeInspector.java
@@ -79,6 +79,7 @@
}
Timing timing = new Timing("CodeInspector");
InternalOptions options = new InternalOptions();
+ options.enableCfFrontend = true;
if (optionsConsumer != null) {
optionsConsumer.accept(options);
}
@@ -89,7 +90,7 @@
public CodeInspector(AndroidApp app) throws IOException, ExecutionException {
this(
- new ApplicationReader(app, new InternalOptions(), new Timing("CodeInspector"))
+ new ApplicationReader(app, runOptionsConsumer(null), new Timing("CodeInspector"))
.read(app.getProguardMapOutputData()));
}
@@ -102,13 +103,16 @@
private static InternalOptions runOptionsConsumer(Consumer<InternalOptions> optionsConsumer) {
InternalOptions internalOptions = new InternalOptions();
- optionsConsumer.accept(internalOptions);
+ internalOptions.enableCfFrontend = true;
+ if (optionsConsumer != null) {
+ optionsConsumer.accept(internalOptions);
+ }
return internalOptions;
}
public CodeInspector(AndroidApp app, Path proguardMap) throws IOException, ExecutionException {
this(
- new ApplicationReader(app, new InternalOptions(), new Timing("CodeInspector"))
+ new ApplicationReader(app, runOptionsConsumer(null), new Timing("CodeInspector"))
.read(StringResource.fromFile(proguardMap)));
}