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