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