Home | History | Annotate | Download | only in 032-bb-live-code
      1 ; Copyright (C) 2007 The Android Open Source Project
      2 ;
      3 ; Licensed under the Apache License, Version 2.0 (the "License");
      4 ; you may not use this file except in compliance with the License.
      5 ; You may obtain a copy of the License at
      6 ;
      7 ;      http://www.apache.org/licenses/LICENSE-2.0
      8 ;
      9 ; Unless required by applicable law or agreed to in writing, software
     10 ; distributed under the License is distributed on an "AS IS" BASIS,
     11 ; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     12 ; See the License for the specific language governing permissions and
     13 ; limitations under the License.
     14 
     15 .class blort
     16 .super java/lang/Object
     17 
     18 .method public <init>()V
     19     .limit locals 1
     20 
     21     aload_0
     22     invokespecial java/lang/Object/<init>()V
     23     return
     24 .end method
     25 
     26 ; Test that an exception handler for a live range is enlivened.
     27 .method public test_live_exception([I)V
     28     nop
     29     nop
     30 start:
     31     aload_0
     32     arraylength
     33 end1:
     34     nop
     35 end2:
     36     return
     37 handler1:
     38     return
     39 handler2:
     40     return
     41     .catch java/lang/RuntimeException from start to end2 using handler2
     42     .catch all from start to end1 using handler1
     43 .end method
     44 
     45 ; Test that an exception handler for a live range is dead as long as
     46 ; the covered code can't possibly throw.
     47 .method public test_dead_exception()V
     48     nop
     49     nop
     50 start:
     51     nop
     52 end1:
     53     nop
     54 end2:
     55     return
     56 handler1:
     57     return
     58 handler2:
     59     return
     60     .catch java/lang/RuntimeException from start to end2 using handler2
     61     .catch all from start to end1 using handler1
     62 .end method
     63 
     64 ; Test all the if* variants.
     65 .method public test_ifs()V
     66     ifeq x0
     67     ifne x1
     68     iflt x2
     69     ifge x3
     70     ifgt x4
     71     ifle x5
     72     if_icmpeq x6
     73     if_icmpne x7
     74     if_icmplt x8
     75     if_icmpge x9
     76     if_icmpgt x10
     77     if_icmple x11
     78     if_acmpeq x12
     79     if_acmpne x13
     80     ifnull x14
     81     ifnonnull x15
     82     return
     83 x0:
     84     return
     85 x1:
     86     return
     87 x2:
     88     return
     89 x3:
     90     return
     91 x4:
     92     return
     93 x5:
     94     return
     95 x6:
     96     return
     97 x7:
     98     return
     99 x8:
    100     return
    101 x9:
    102     return
    103 x10:
    104     return
    105 x11:
    106     return
    107 x12:
    108     return
    109 x13:
    110     return
    111 x14:
    112     return
    113 x15:
    114     return
    115 .end method
    116 
    117 ; Test jsr and jsr_w.
    118 .method public test_jsr()V
    119     jsr j1
    120     jsr_w j2
    121     return
    122 j1:
    123     astore_0
    124     ret 0
    125 j2:
    126     astore_0
    127     ret_w 0
    128 .end method
    129 
    130 ; Test tableswitch.
    131 .method public test_tableswitch()V
    132     tableswitch 0x10
    133         t1
    134         t2
    135         default: t3
    136 t1:
    137     return
    138 t2:
    139     return
    140 t3:
    141     return
    142 .end method
    143 
    144 ; Test lookupswitch.
    145 .method public test_lookupswitch()V
    146     lookupswitch
    147         0x05: s1
    148         0x10: s2
    149         default: s3
    150 s1:
    151     return
    152 s2:
    153     return
    154 s3:
    155     return
    156 .end method
    157 
    158 ; Test every non-branching op.
    159 .method public test_nonbranch()V
    160     nop
    161     aconst_null
    162     iconst_m1
    163     iconst_0
    164     iconst_1
    165     iconst_2
    166     iconst_3
    167     iconst_4
    168     iconst_5
    169     lconst_0
    170     lconst_1
    171     fconst_0
    172     fconst_1
    173     fconst_2
    174     dconst_0
    175     dconst_1
    176     bipush 0x10
    177     sipush 0x1000
    178     ldc "x"
    179     ldc_w "y"
    180     ldc2_w 3.0
    181     iload 5
    182     lload 5
    183     fload 5
    184     dload 5
    185     aload 5
    186     iload_0
    187     iload_1
    188     iload_2
    189     iload_3
    190     lload_0
    191     lload_1
    192     lload_2
    193     lload_3
    194     fload_0
    195     fload_1
    196     fload_2
    197     fload_3
    198     dload_0
    199     dload_1
    200     dload_2
    201     dload_3
    202     aload_0
    203     aload_1
    204     aload_2
    205     aload_3
    206     iaload
    207     laload
    208     faload
    209     daload
    210     aaload
    211     baload
    212     caload
    213     saload
    214     istore 5
    215     lstore 5
    216     fstore 5
    217     dstore 5
    218     astore 5
    219     istore_0
    220     istore_1
    221     istore_2
    222     istore_3
    223     lstore_0
    224     lstore_1
    225     lstore_2
    226     lstore_3
    227     fstore_0
    228     fstore_1
    229     fstore_2
    230     fstore_3
    231     dstore_0
    232     dstore_1
    233     dstore_2
    234     dstore_3
    235     astore_0
    236     astore_1
    237     astore_2
    238     astore_3
    239     iastore
    240     lastore
    241     fastore
    242     dastore
    243     aastore
    244     bastore
    245     castore
    246     sastore
    247     pop
    248     pop2
    249     dup
    250     dup_x1
    251     dup_x2
    252     dup2
    253     dup2_x1
    254     dup2_x2
    255     swap
    256     iadd
    257     ladd
    258     fadd
    259     dadd
    260     isub
    261     lsub
    262     fsub
    263     dsub
    264     imul
    265     lmul
    266     fmul
    267     dmul
    268     idiv
    269     ldiv
    270     fdiv
    271     ddiv
    272     irem
    273     lrem
    274     frem
    275     drem
    276     ineg
    277     lneg
    278     fneg
    279     dneg
    280     ishl
    281     lshl
    282     ishr
    283     lshr
    284     iushr
    285     lushr
    286     iand
    287     land
    288     ior
    289     lor
    290     ixor
    291     lxor
    292     iinc 5 0x10
    293     i2l
    294     i2f
    295     i2d
    296     l2i
    297     l2f
    298     l2d
    299     f2i
    300     f2l
    301     f2d
    302     d2i
    303     d2l
    304     d2f
    305     i2b
    306     i2c
    307     i2s
    308     lcmp
    309     fcmpl
    310     fcmpg
    311     dcmpl
    312     dcmpg
    313     getstatic blort/x I
    314     putstatic blort/x I
    315     getfield blort/x I
    316     putfield blort/x I
    317     invokevirtual blort/x()V
    318     invokespecial blort/x()V
    319     invokestatic blort/x()V
    320     invokeinterface blort/x()V 1
    321     new blort
    322     newarray int
    323     anewarray blort
    324     arraylength
    325     checkcast blort
    326     instanceof blort
    327     monitorenter
    328     monitorexit
    329     iload 0x100
    330     lload 0x100
    331     fload 0x100
    332     dload 0x100
    333     aload 0x100
    334     istore 0x100
    335     lstore 0x100
    336     fstore 0x100
    337     dstore 0x100
    338     astore 0x100
    339     iinc 0x123 0x321
    340     multianewarray [[[I 2
    341     return
    342 .end method
    343