You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
343 lines
4.8 KiB
343 lines
4.8 KiB
4 months ago
|
; 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
|