diff options
author | 2022-06-24 11:16:35 +0100 | |
---|---|---|
committer | 2022-10-10 09:55:22 +0000 | |
commit | 8efb1a62b67fd1e6866a4b7e465afc11770bb082 (patch) | |
tree | 1f7a9ee46d064b801ce596aaea010f4aafba3aea /test/2237-checker-inline-multidex/src/Main.java | |
parent | 841a69822d8a8cd04159575957367eeca2fbd1b2 (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.java | 56 |
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"); + } } |