summaryrefslogtreecommitdiff
path: root/test/2237-checker-inline-multidex/src/Main.java
diff options
context:
space:
mode:
author Santiago Aboy Solanes <solanes@google.com> 2022-06-24 11:16:35 +0100
committer Santiago Aboy Solanes <solanes@google.com> 2022-10-10 09:55:22 +0000
commit8efb1a62b67fd1e6866a4b7e465afc11770bb082 (patch)
tree1f7a9ee46d064b801ce596aaea010f4aafba3aea /test/2237-checker-inline-multidex/src/Main.java
parent841a69822d8a8cd04159575957367eeca2fbd1b2 (diff)
Compiler implementation of try catch inlining
Notable changes: 1) Wiring of the graph now allows for inlinees graph ending in TryBoundary, or Goto in some special cases. 2) Building a graph with try catch for inlining may add an extra Goto block. 3) Oat version bump. 4) Reduced kMaximumNumberOfCumulatedDexRegisters from 32 to 20. Bug: 227283224 Test: art/test/testrunner/testrunner.py --host --64 --optimizing -b Change-Id: Ic2fd956de24b72d1de29b4cd3d0b2a1ddab231d8
Diffstat (limited to 'test/2237-checker-inline-multidex/src/Main.java')
-rw-r--r--test/2237-checker-inline-multidex/src/Main.java56
1 files changed, 36 insertions, 20 deletions
diff --git a/test/2237-checker-inline-multidex/src/Main.java b/test/2237-checker-inline-multidex/src/Main.java
index 7ab2e7fa64..7a2ca829f3 100644
--- a/test/2237-checker-inline-multidex/src/Main.java
+++ b/test/2237-checker-inline-multidex/src/Main.java
@@ -16,57 +16,73 @@
public class Main {
public static void main(String[] args) {
- System.out.println(testNeedsEnvironment());
- System.out.println(testNeedsBssEntryString());
- System.out.println(testNeedsBssEntryInvoke());
- System.out.println(testClass());
+ // Test that the cross-dex inlining is working for HInstructions that need an environment.
+ System.out.println($noinline$testNeedsEnvironment());
+
+ // Test that the cross-dex inlining is working for HInstructions that need a bss entry.
+ System.out.println($noinline$testNeedsBssEntryString());
+ System.out.println($noinline$testNeedsBssEntryInvoke());
+ System.out.println($noinline$testClass());
+
+ // Test that we are able to inline try catches across dex files.
+ System.out.println($noinline$testTryCatch());
}
- /// CHECK-START: java.lang.String Main.testNeedsEnvironment() inliner (before)
+ /// CHECK-START: java.lang.String Main.$noinline$testNeedsEnvironment() inliner (before)
/// CHECK: InvokeStaticOrDirect method_name:Multi.$inline$NeedsEnvironmentMultiDex
- /// CHECK-START: java.lang.String Main.testNeedsEnvironment() inliner (after)
+ /// CHECK-START: java.lang.String Main.$noinline$testNeedsEnvironment() inliner (after)
/// CHECK-NOT: InvokeStaticOrDirect method_name:Multi.$inline$NeedsEnvironmentMultiDex
- /// CHECK-START: java.lang.String Main.testNeedsEnvironment() inliner (after)
+ /// CHECK-START: java.lang.String Main.$noinline$testNeedsEnvironment() inliner (after)
/// CHECK: StringBuilderAppend
- public static String testNeedsEnvironment() {
+ private static String $noinline$testNeedsEnvironment() {
return Multi.$inline$NeedsEnvironmentMultiDex("abc");
}
- /// CHECK-START: java.lang.String Main.testNeedsBssEntryString() inliner (before)
+ /// CHECK-START: java.lang.String Main.$noinline$testNeedsBssEntryString() inliner (before)
/// CHECK: InvokeStaticOrDirect method_name:Multi.$inline$NeedsBssEntryStringMultiDex
- /// CHECK-START: java.lang.String Main.testNeedsBssEntryString() inliner (after)
+ /// CHECK-START: java.lang.String Main.$noinline$testNeedsBssEntryString() inliner (after)
/// CHECK-NOT: InvokeStaticOrDirect method_name:Multi.$inline$NeedsBssEntryStringMultiDex
- /// CHECK-START: java.lang.String Main.testNeedsBssEntryString() inliner (after)
+ /// CHECK-START: java.lang.String Main.$noinline$testNeedsBssEntryString() inliner (after)
/// CHECK: LoadString load_kind:BssEntry
- public static String testNeedsBssEntryString() {
+ private static String $noinline$testNeedsBssEntryString() {
return Multi.$inline$NeedsBssEntryStringMultiDex();
}
- /// CHECK-START: java.lang.String Main.testNeedsBssEntryInvoke() inliner (before)
+ /// CHECK-START: java.lang.String Main.$noinline$testNeedsBssEntryInvoke() inliner (before)
/// CHECK: InvokeStaticOrDirect method_name:Multi.$inline$NeedsBssEntryInvokeMultiDex
- /// CHECK-START: java.lang.String Main.testNeedsBssEntryInvoke() inliner (after)
+ /// CHECK-START: java.lang.String Main.$noinline$testNeedsBssEntryInvoke() inliner (after)
/// CHECK-NOT: InvokeStaticOrDirect method_name:Multi.$inline$NeedsBssEntryInvokeMultiDex
- /// CHECK-START: java.lang.String Main.testNeedsBssEntryInvoke() inliner (after)
+ /// CHECK-START: java.lang.String Main.$noinline$testNeedsBssEntryInvoke() inliner (after)
/// CHECK: InvokeStaticOrDirect method_name:Multi.$noinline$InnerInvokeMultiDex method_load_kind:BssEntry
- public static String testNeedsBssEntryInvoke() {
+ private static String $noinline$testNeedsBssEntryInvoke() {
return Multi.$inline$NeedsBssEntryInvokeMultiDex();
}
- /// CHECK-START: java.lang.Class Main.testClass() inliner (before)
+ /// CHECK-START: java.lang.Class Main.$noinline$testClass() inliner (before)
/// CHECK: InvokeStaticOrDirect method_name:Multi.NeedsBssEntryClassMultiDex
- /// CHECK-START: java.lang.Class Main.testClass() inliner (after)
+ /// CHECK-START: java.lang.Class Main.$noinline$testClass() inliner (after)
/// CHECK-NOT: InvokeStaticOrDirect method_name:Multi.NeedsBssEntryClassMultiDex
- /// CHECK-START: java.lang.Class Main.testClass() inliner (after)
+ /// CHECK-START: java.lang.Class Main.$noinline$testClass() inliner (after)
/// CHECK: LoadClass load_kind:BssEntry class_name:Multi$Multi2
- public static Class<?> testClass() {
+ private static Class<?> $noinline$testClass() {
return Multi.NeedsBssEntryClassMultiDex();
}
+
+
+ /// CHECK-START: int Main.$noinline$testTryCatch() inliner (before)
+ /// CHECK-NOT: TryBoundary
+
+ /// CHECK-START: int Main.$noinline$testTryCatch() inliner (after)
+ /// CHECK: TryBoundary
+ private static int $noinline$testTryCatch() {
+ return Multi.$inline$TryCatch("123") + Multi.$inline$TryCatch("abc");
+ }
}