diff options
Diffstat (limited to 'dx/tests/032-bb-live-code/blort.j')
-rw-r--r-- | dx/tests/032-bb-live-code/blort.j | 342 |
1 files changed, 342 insertions, 0 deletions
diff --git a/dx/tests/032-bb-live-code/blort.j b/dx/tests/032-bb-live-code/blort.j new file mode 100644 index 0000000..05790bb --- /dev/null +++ b/dx/tests/032-bb-live-code/blort.j @@ -0,0 +1,342 @@ +; Copyright (C) 2007 The Android Open Source Project +; +; Licensed under the Apache License, Version 2.0 (the "License"); +; you may not use this file except in compliance with the License. +; You may obtain a copy of the License at +; +; http://www.apache.org/licenses/LICENSE-2.0 +; +; Unless required by applicable law or agreed to in writing, software +; distributed under the License is distributed on an "AS IS" BASIS, +; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +; See the License for the specific language governing permissions and +; limitations under the License. + +.class blort +.super java/lang/Object + +.method public <init>()V + .limit locals 1 + + aload_0 + invokespecial java/lang/Object/<init>()V + return +.end method + +; Test that an exception handler for a live range is enlivened. +.method public test_live_exception([I)V + nop + nop +start: + aload_0 + arraylength +end1: + nop +end2: + return +handler1: + return +handler2: + return + .catch java/lang/RuntimeException from start to end2 using handler2 + .catch all from start to end1 using handler1 +.end method + +; Test that an exception handler for a live range is dead as long as +; the covered code can't possibly throw. +.method public test_dead_exception()V + nop + nop +start: + nop +end1: + nop +end2: + return +handler1: + return +handler2: + return + .catch java/lang/RuntimeException from start to end2 using handler2 + .catch all from start to end1 using handler1 +.end method + +; Test all the if* variants. +.method public test_ifs()V + ifeq x0 + ifne x1 + iflt x2 + ifge x3 + ifgt x4 + ifle x5 + if_icmpeq x6 + if_icmpne x7 + if_icmplt x8 + if_icmpge x9 + if_icmpgt x10 + if_icmple x11 + if_acmpeq x12 + if_acmpne x13 + ifnull x14 + ifnonnull x15 + return +x0: + return +x1: + return +x2: + return +x3: + return +x4: + return +x5: + return +x6: + return +x7: + return +x8: + return +x9: + return +x10: + return +x11: + return +x12: + return +x13: + return +x14: + return +x15: + return +.end method + +; Test jsr and jsr_w. +.method public test_jsr()V + jsr j1 + jsr_w j2 + return +j1: + astore_0 + ret 0 +j2: + astore_0 + ret_w 0 +.end method + +; Test tableswitch. +.method public test_tableswitch()V + tableswitch 0x10 + t1 + t2 + default: t3 +t1: + return +t2: + return +t3: + return +.end method + +; Test lookupswitch. +.method public test_lookupswitch()V + lookupswitch + 0x05: s1 + 0x10: s2 + default: s3 +s1: + return +s2: + return +s3: + return +.end method + +; Test every non-branching op. +.method public test_nonbranch()V + nop + aconst_null + iconst_m1 + iconst_0 + iconst_1 + iconst_2 + iconst_3 + iconst_4 + iconst_5 + lconst_0 + lconst_1 + fconst_0 + fconst_1 + fconst_2 + dconst_0 + dconst_1 + bipush 0x10 + sipush 0x1000 + ldc "x" + ldc_w "y" + ldc2_w 3.0 + iload 5 + lload 5 + fload 5 + dload 5 + aload 5 + iload_0 + iload_1 + iload_2 + iload_3 + lload_0 + lload_1 + lload_2 + lload_3 + fload_0 + fload_1 + fload_2 + fload_3 + dload_0 + dload_1 + dload_2 + dload_3 + aload_0 + aload_1 + aload_2 + aload_3 + iaload + laload + faload + daload + aaload + baload + caload + saload + istore 5 + lstore 5 + fstore 5 + dstore 5 + astore 5 + istore_0 + istore_1 + istore_2 + istore_3 + lstore_0 + lstore_1 + lstore_2 + lstore_3 + fstore_0 + fstore_1 + fstore_2 + fstore_3 + dstore_0 + dstore_1 + dstore_2 + dstore_3 + astore_0 + astore_1 + astore_2 + astore_3 + iastore + lastore + fastore + dastore + aastore + bastore + castore + sastore + pop + pop2 + dup + dup_x1 + dup_x2 + dup2 + dup2_x1 + dup2_x2 + swap + iadd + ladd + fadd + dadd + isub + lsub + fsub + dsub + imul + lmul + fmul + dmul + idiv + ldiv + fdiv + ddiv + irem + lrem + frem + drem + ineg + lneg + fneg + dneg + ishl + lshl + ishr + lshr + iushr + lushr + iand + land + ior + lor + ixor + lxor + iinc 5 0x10 + i2l + i2f + i2d + l2i + l2f + l2d + f2i + f2l + f2d + d2i + d2l + d2f + i2b + i2c + i2s + lcmp + fcmpl + fcmpg + dcmpl + dcmpg + getstatic blort/x I + putstatic blort/x I + getfield blort/x I + putfield blort/x I + invokevirtual blort/x()V + invokespecial blort/x()V + invokestatic blort/x()V + invokeinterface blort/x()V 1 + new blort + newarray int + anewarray blort + arraylength + checkcast blort + instanceof blort + monitorenter + monitorexit + iload 0x100 + lload 0x100 + fload 0x100 + dload 0x100 + aload 0x100 + istore 0x100 + lstore 0x100 + fstore 0x100 + dstore 0x100 + astore 0x100 + iinc 0x123 0x321 + multianewarray [[[I 2 + return +.end method |