; 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