diff options
author | Andreas Gampe <agampe@google.com> | 2015-03-24 02:39:46 +0000 |
---|---|---|
committer | Andreas Gampe <agampe@google.com> | 2015-03-24 02:39:46 +0000 |
commit | 0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430 (patch) | |
tree | 0e1d0813c1d8d1c7239a900c1653296975713df0 /test/449-checker-bce | |
parent | e295e6ec5beaea31be5d7d3c996cd8cfa2053129 (diff) | |
download | art-0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430.tar.gz art-0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430.tar.bz2 art-0ba627337274ccfb8c9cb9bf23fffb1e1b9d1430.zip |
Revert "Deoptimization-based bce."
This breaks compiling the core image:
Error after BCE: art::SSAChecker: Instruction 219 in block 1 does not dominate use 221 in block 1.
This reverts commit e295e6ec5beaea31be5d7d3c996cd8cfa2053129.
Change-Id: Ieeb48797d451836ed506ccb940872f1443942e4e
Diffstat (limited to 'test/449-checker-bce')
-rw-r--r-- | test/449-checker-bce/expected.txt | 1 | ||||
-rw-r--r-- | test/449-checker-bce/src/Main.java | 148 |
2 files changed, 5 insertions, 144 deletions
diff --git a/test/449-checker-bce/expected.txt b/test/449-checker-bce/expected.txt index 29d6383b52..e69de29bb2 100644 --- a/test/449-checker-bce/expected.txt +++ b/test/449-checker-bce/expected.txt @@ -1 +0,0 @@ -100 diff --git a/test/449-checker-bce/src/Main.java b/test/449-checker-bce/src/Main.java index 17039a3492..30aa870acb 100644 --- a/test/449-checker-bce/src/Main.java +++ b/test/449-checker-bce/src/Main.java @@ -108,147 +108,29 @@ public class Main { } - // CHECK-START: void Main.constantIndexing1(int[]) BCE (before) + // CHECK-START: void Main.constantIndexing(int[]) BCE (before) // CHECK: BoundsCheck // CHECK: ArraySet // CHECK: BoundsCheck // CHECK: ArraySet - - // CHECK-START: void Main.constantIndexing1(int[]) BCE (after) - // CHECK-NOT: Deoptimize // CHECK: BoundsCheck // CHECK: ArraySet - // CHECK-NOT: BoundsCheck - // CHECK: ArraySet - static void constantIndexing1(int[] array) { - array[5] = 1; - array[4] = 1; - } - - - // CHECK-START: void Main.constantIndexing2(int[]) BCE (before) - // CHECK: BoundsCheck - // CHECK: ArraySet - // CHECK: BoundsCheck - // CHECK: ArraySet - // CHECK: BoundsCheck - // CHECK: ArraySet + // CHECK-START: void Main.constantIndexing(int[]) BCE (after) // CHECK: BoundsCheck // CHECK: ArraySet - - // CHECK-START: void Main.constantIndexing2(int[]) BCE (after) - // CHECK: LessThanOrEqual - // CHECK: Deoptimize - // CHECK-NOT: BoundsCheck - // CHECK: ArraySet - // CHECK-NOT: BoundsCheck - // CHECK: ArraySet - // CHECK-NOT: BoundsCheck - // CHECK: ArraySet // CHECK-NOT: BoundsCheck // CHECK: ArraySet // CHECK: BoundsCheck // CHECK: ArraySet - static void constantIndexing2(int[] array) { - array[1] = 1; - array[2] = 1; - array[3] = 1; + static void constantIndexing(int[] array) { + array[5] = 1; array[4] = 1; - array[-1] = 1; - } - - - // CHECK-START: int[] Main.constantIndexing3(int[], int[], boolean) BCE (before) - // CHECK: BoundsCheck - // CHECK: ArrayGet - // CHECK: BoundsCheck - // CHECK: ArraySet - // CHECK: BoundsCheck - // CHECK: ArrayGet - // CHECK: BoundsCheck - // CHECK: ArraySet - // CHECK: BoundsCheck - // CHECK: ArrayGet - // CHECK: BoundsCheck - // CHECK: ArraySet - // CHECK: BoundsCheck - // CHECK: ArrayGet - // CHECK: BoundsCheck - // CHECK: ArraySet - - // CHECK-START: int[] Main.constantIndexing3(int[], int[], boolean) BCE (after) - // CHECK: LessThanOrEqual - // CHECK: Deoptimize - // CHECK-NOT: BoundsCheck - // CHECK: ArrayGet - // CHECK: LessThanOrEqual - // CHECK: Deoptimize - // CHECK-NOT: BoundsCheck - // CHECK: ArraySet - // CHECK-NOT: BoundsCheck - // CHECK: ArrayGet - // CHECK-NOT: BoundsCheck - // CHECK: ArraySet - // CHECK-NOT: BoundsCheck - // CHECK: ArrayGet - // CHECK-NOT: BoundsCheck - // CHECK: ArraySet - // CHECK-NOT: BoundsCheck - // CHECK: ArrayGet - // CHECK-NOT: BoundsCheck - // CHECK: ArraySet - - static int[] constantIndexing3(int[] array1, int[] array2, boolean copy) { - if (!copy) { - return array1; - } - array2[0] = array1[0]; - array2[1] = array1[1]; - array2[2] = array1[2]; - array2[3] = array1[3]; - return array2; - } - - - // CHECK-START: void Main.constantIndexing4(int[]) BCE (before) - // CHECK: BoundsCheck - // CHECK: ArraySet - - // CHECK-START: void Main.constantIndexing4(int[]) BCE (after) - // CHECK-NOT: LessThanOrEqual - // CHECK: BoundsCheck - // CHECK: ArraySet - - // There is only one array access. It's not beneficial - // to create a compare with deoptimization instruction. - static void constantIndexing4(int[] array) { - array[0] = 1; + array[6] = 1; } - // CHECK-START: void Main.constantIndexing5(int[]) BCE (before) - // CHECK: BoundsCheck - // CHECK: ArraySet - // CHECK: BoundsCheck - // CHECK: ArraySet - - // CHECK-START: void Main.constantIndexing5(int[]) BCE (after) - // CHECK-NOT: Deoptimize - // CHECK: BoundsCheck - // CHECK: ArraySet - // CHECK: BoundsCheck - // CHECK: ArraySet - - static void constantIndexing5(int[] array) { - // We don't apply the deoptimization for very large constant index - // since it's likely to be an anomaly and will throw AIOOBE. - array[Integer.MAX_VALUE - 1000] = 1; - array[Integer.MAX_VALUE - 999] = 1; - array[Integer.MAX_VALUE - 998] = 1; - } - // CHECK-START: void Main.loopPattern1(int[]) BCE (before) // CHECK: BoundsCheck // CHECK: ArraySet @@ -597,21 +479,6 @@ public class Main { } - static int foo() { - try { - // This will cause AIOOBE. - constantIndexing2(new int[3]); - } catch (ArrayIndexOutOfBoundsException e) { - return 99; - } - return 0; - } - - - // Make sure this method is compiled with optimizing. - // CHECK-START: void Main.main(java.lang.String[]) register (after) - // CHECK: ParallelMove - public static void main(String[] args) { sieve(20); @@ -640,10 +507,5 @@ public class Main { if (!isPyramid(array)) { System.out.println("pyramid3 failed!"); } - - // Make sure this value is kept after deoptimization. - int i = 1; - System.out.println(foo() + i); } - } |