diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/565-checker-condition-liveness/src/Main.java | 70 | ||||
-rw-r--r-- | test/dexdump/bytecodes.txt | 4 | ||||
-rwxr-xr-x | test/dexdump/bytecodes.xml | 12 | ||||
-rwxr-xr-x | test/dexdump/checkers.xml | 2 | ||||
-rw-r--r-- | test/dexdump/invoke-custom.txt | 10 |
5 files changed, 78 insertions, 20 deletions
diff --git a/test/565-checker-condition-liveness/src/Main.java b/test/565-checker-condition-liveness/src/Main.java index 374e136885..25ec3f53b1 100644 --- a/test/565-checker-condition-liveness/src/Main.java +++ b/test/565-checker-condition-liveness/src/Main.java @@ -30,26 +30,52 @@ public class Main { public static int p(float arg) { return (arg > 5.0f) ? 0 : -1; } + + /// CHECK-START-{ARM,ARM64}: void Main.testThrowIntoCatchBlock(int, java.lang.Object, int[]) liveness (after) + /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[23,25] + /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[11,23,25] + /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[11,23,25] + /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 env_uses:[23,25] + /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:10 + /// CHECK-DAG: NullCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:20 + /// CHECK-DAG: ArrayLength liveness:22 + /// CHECK-DAG: BoundsCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:24 + /// CHECK-DAG: TryBoundary + + /// CHECK-START-{ARM,ARM64}-DEBUGGABLE: void Main.testThrowIntoCatchBlock(int, java.lang.Object, int[]) liveness (after) + /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[11,23,25] + /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[11,23,25] + /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[11,23,25] + /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 env_uses:[23,25] + /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:10 + /// CHECK-DAG: NullCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:20 + /// CHECK-DAG: ArrayLength liveness:22 + /// CHECK-DAG: BoundsCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:24 + /// CHECK-DAG: TryBoundary - /// CHECK-START: void Main.testThrowIntoCatchBlock(int, java.lang.Object, int[]) liveness (after) + // X86 and X86_64 generate at use site the ArrayLength, meaning only the BoundsCheck will have environment uses. + /// CHECK-START-{X86,X86_64}: void Main.testThrowIntoCatchBlock(int, java.lang.Object, int[]) liveness (after) /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[25] /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[11,25] /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[11,25] /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 env_uses:[25] /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:10 /// CHECK-DAG: NullCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:20 + /// CHECK-DAG: ArrayLength liveness:22 /// CHECK-DAG: BoundsCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:24 /// CHECK-DAG: TryBoundary - /// CHECK-START-DEBUGGABLE: void Main.testThrowIntoCatchBlock(int, java.lang.Object, int[]) liveness (after) + /// CHECK-START-{X86,X86_64}-DEBUGGABLE: void Main.testThrowIntoCatchBlock(int, java.lang.Object, int[]) liveness (after) /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[11,25] /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[11,25] /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[11,25] /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 env_uses:[25] /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:10 /// CHECK-DAG: NullCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:20 + /// CHECK-DAG: ArrayLength liveness:22 /// CHECK-DAG: BoundsCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:24 /// CHECK-DAG: TryBoundary + // // A value live at a throwing instruction in a try block may be copied by // the exception handler to its location at the top of the catch block. @@ -60,22 +86,44 @@ public class Main { } } - /// CHECK-START: void Main.testBoundsCheck(int, java.lang.Object, int[]) liveness (after) + /// CHECK-START-{ARM,ARM64}: void Main.testBoundsCheck(int, java.lang.Object, int[]) liveness (after) + /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[] + /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[11,19,21] + /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[11,19,21] + /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 env_uses:[] + /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:10 + /// CHECK-DAG: NullCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:16 + /// CHECK-DAG: ArrayLength liveness:18 + /// CHECK-DAG: BoundsCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:20 + + /// CHECK-START-{ARM,ARM64}-DEBUGGABLE: void Main.testBoundsCheck(int, java.lang.Object, int[]) liveness (after) + /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[11,19,21] + /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[11,19,21] + /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[11,19,21] + /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 env_uses:[19,21] + /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:10 + /// CHECK-DAG: NullCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:16 + /// CHECK-DAG: ArrayLength liveness:18 + /// CHECK-DAG: BoundsCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:20 + + /// CHECK-START-{X86,X86_64}: void Main.testBoundsCheck(int, java.lang.Object, int[]) liveness (after) /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[] /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[11,21] /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[11,21] /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 env_uses:[] /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:10 /// CHECK-DAG: NullCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:16 + /// CHECK-DAG: ArrayLength liveness:18 /// CHECK-DAG: BoundsCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:20 - /// CHECK-START-DEBUGGABLE: void Main.testBoundsCheck(int, java.lang.Object, int[]) liveness (after) + /// CHECK-START-{X86,X86_64}-DEBUGGABLE: void Main.testBoundsCheck(int, java.lang.Object, int[]) liveness (after) /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[11,21] /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[11,21] /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[11,21] /// CHECK-DAG: <<Const1:i\d+>> IntConstant 1 env_uses:[21] /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:10 /// CHECK-DAG: NullCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:16 + /// CHECK-DAG: ArrayLength liveness:18 /// CHECK-DAG: BoundsCheck env:[[<<Const1>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:20 public static void testBoundsCheck(int x, Object y, int[] a) { a[1] = x; @@ -90,12 +138,22 @@ public class Main { /// CHECK-DAG: NullCheck env:[[<<Const0>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:18 /// CHECK-DAG: ArrayLength liveness:20 /// CHECK-DAG: Deoptimize env:[[<<Const0>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:24 + + /// CHECK-START-{ARM,ARM64}-DEBUGGABLE: void Main.testDeoptimize(int, java.lang.Object, int[]) liveness (after) + /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[13,21,25] + /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[13,21,25] + /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[13,21,25] + /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 env_uses:[21,25] + /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:12 + /// CHECK-DAG: NullCheck env:[[<<Const0>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:18 + /// CHECK-DAG: ArrayLength liveness:20 + /// CHECK-DAG: Deoptimize env:[[<<Const0>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:24 - /// CHECK-START-DEBUGGABLE: void Main.testDeoptimize(int, java.lang.Object, int[]) liveness (after) + /// CHECK-START-{X86,X86_64}-DEBUGGABLE: void Main.testDeoptimize(int, java.lang.Object, int[]) liveness (after) /// CHECK-DAG: <<IntArg:i\d+>> ParameterValue env_uses:[13,21,25] /// CHECK-DAG: <<RefArg:l\d+>> ParameterValue env_uses:[13,21,25] /// CHECK-DAG: <<Array:l\d+>> ParameterValue env_uses:[13,21,25] - /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 env_uses:[19,25] + /// CHECK-DAG: <<Const0:i\d+>> IntConstant 0 env_uses:[21,25] /// CHECK-DAG: SuspendCheck env:[[_,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:12 /// CHECK-DAG: NullCheck env:[[<<Const0>>,<<IntArg>>,<<RefArg>>,<<Array>>]] liveness:18 /// CHECK-DAG: ArrayLength liveness:20 diff --git a/test/dexdump/bytecodes.txt b/test/dexdump/bytecodes.txt index e1a381ec09..1ed66e8a10 100644 --- a/test/dexdump/bytecodes.txt +++ b/test/dexdump/bytecodes.txt @@ -176,7 +176,7 @@ Class #3 - ins : 1 outs : 1 insns size : 4 16-bit code units -0009a8: |[0009a8] com.google.android.test.R.attr.<init>:()V +0009a8: |[0009a8] com.google.android.test.R$attr.<init>:()V 0009b8: 7010 1900 0000 |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0019 0009be: 0e00 |0003: return-void catches : (none) @@ -228,7 +228,7 @@ Class #4 - ins : 1 outs : 1 insns size : 4 16-bit code units -0009c0: |[0009c0] com.google.android.test.R.drawable.<init>:()V +0009c0: |[0009c0] com.google.android.test.R$drawable.<init>:()V 0009d0: 7010 1900 0000 |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0019 0009d6: 0e00 |0003: return-void catches : (none) diff --git a/test/dexdump/bytecodes.xml b/test/dexdump/bytecodes.xml index d08c2e929c..d4ee3a7eee 100755 --- a/test/dexdump/bytecodes.xml +++ b/test/dexdump/bytecodes.xml @@ -71,7 +71,7 @@ > </constructor> </class> -<class name="R.attr" +<class name="R$attr" extends="java.lang.Object" interface="false" abstract="false" @@ -79,15 +79,15 @@ final="true" visibility="public" > -<constructor name="R.attr" - type="com.google.android.test.R.attr" +<constructor name="R$attr" + type="com.google.android.test.R$attr" static="false" final="false" visibility="public" > </constructor> </class> -<class name="R.drawable" +<class name="R$drawable" extends="java.lang.Object" interface="false" abstract="false" @@ -105,8 +105,8 @@ value="2130837504" > </field> -<constructor name="R.drawable" - type="com.google.android.test.R.drawable" +<constructor name="R$drawable" + type="com.google.android.test.R$drawable" static="false" final="false" visibility="public" diff --git a/test/dexdump/checkers.xml b/test/dexdump/checkers.xml index 4e56ea2d66..3d3bac2d69 100755 --- a/test/dexdump/checkers.xml +++ b/test/dexdump/checkers.xml @@ -181,7 +181,7 @@ final="true" visibility="public" > -<parameter name="arg0" type="android.content.SharedPreferences.Editor"> +<parameter name="arg0" type="android.content.SharedPreferences$Editor"> </parameter> </method> <method name="a" diff --git a/test/dexdump/invoke-custom.txt b/test/dexdump/invoke-custom.txt index cfab248168..1bfa0532b2 100644 --- a/test/dexdump/invoke-custom.txt +++ b/test/dexdump/invoke-custom.txt @@ -58,7 +58,7 @@ Class #0 - ins : 2 outs : 2 insns size : 4 16-bit code units -001b18: |[001b18] TestBadBootstrapArguments.TestersConstantCallSite.<init>:(Ljava/lang/invoke/MethodHandle;)V +001b18: |[001b18] TestBadBootstrapArguments$TestersConstantCallSite.<init>:(Ljava/lang/invoke/MethodHandle;)V 001b28: 7020 d200 1000 |0000: invoke-direct {v0, v1}, Ljava/lang/invoke/ConstantCallSite;.<init>:(Ljava/lang/invoke/MethodHandle;)V // method@00d2 001b2e: 0e00 |0003: return-void catches : (none) @@ -537,7 +537,7 @@ Class #2 - ins : 2 outs : 1 insns size : 4 16-bit code units -002abc: |[002abc] TestInvocationKinds.Widget.<init>:(I)V +002abc: |[002abc] TestInvocationKinds$Widget.<init>:(I)V 002acc: 7010 bf00 0000 |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@00bf 002ad2: 0e00 |0003: return-void catches : (none) @@ -586,7 +586,7 @@ Class #3 - ins : 1 outs : 1 insns size : 4 16-bit code units -002ee8: |[002ee8] TestInvokeCustomWithConcurrentThreads.1.<init>:()V +002ee8: |[002ee8] TestInvokeCustomWithConcurrentThreads$1.<init>:()V 002ef8: 7010 cf00 0000 |0000: invoke-direct {v0}, Ljava/lang/ThreadLocal;.<init>:()V // method@00cf 002efe: 0e00 |0003: return-void catches : (none) @@ -605,7 +605,7 @@ Class #3 - ins : 1 outs : 1 insns size : 13 16-bit code units -002ea0: |[002ea0] TestInvokeCustomWithConcurrentThreads.1.initialValue:()Ljava/lang/Integer; +002ea0: |[002ea0] TestInvokeCustomWithConcurrentThreads$1.initialValue:()Ljava/lang/Integer; 002eb0: 7100 6500 0000 |0000: invoke-static {}, LTestInvokeCustomWithConcurrentThreads;.access$000:()Ljava/util/concurrent/atomic/AtomicInteger; // method@0065 002eb6: 0c00 |0003: move-result-object v0 002eb8: 6e10 f100 0000 |0004: invoke-virtual {v0}, Ljava/util/concurrent/atomic/AtomicInteger;.getAndIncrement:()I // method@00f1 @@ -628,7 +628,7 @@ Class #3 - ins : 1 outs : 1 insns size : 5 16-bit code units -002ecc: |[002ecc] TestInvokeCustomWithConcurrentThreads.1.initialValue:()Ljava/lang/Object; +002ecc: |[002ecc] TestInvokeCustomWithConcurrentThreads$1.initialValue:()Ljava/lang/Object; 002edc: 6e10 6100 0100 |0000: invoke-virtual {v1}, LTestInvokeCustomWithConcurrentThreads$1;.initialValue:()Ljava/lang/Integer; // method@0061 002ee2: 0c00 |0003: move-result-object v0 002ee4: 1100 |0004: return-object v0 |