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.
41 lines
969 B
41 lines
969 B
; This class contains evil stack operations, that make it very hard to
|
|
; produce correct code.
|
|
|
|
.class public StackOps
|
|
.super java/lang/Object
|
|
|
|
.method public static concatSwaped(ZLjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
|
|
.limit locals 3
|
|
.limit stack 3
|
|
aload_1
|
|
aload_2
|
|
iload 0
|
|
ifeq dontswap
|
|
swap
|
|
dontswap:
|
|
invokevirtual java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
|
areturn
|
|
.end method
|
|
|
|
.method public static dupTest(Ljava/lang/String;)Ljava/lang/String;
|
|
.limit locals 1
|
|
.limit stack 2
|
|
; first a simple test that we can resolve
|
|
aload_0
|
|
dup
|
|
invokevirtual java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
|
; now concat again.
|
|
dup
|
|
invokevirtual java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
|
; Now a more evil test.
|
|
aload_0
|
|
swap
|
|
ifnull pushagain
|
|
dup
|
|
goto concat
|
|
pushagain:
|
|
aload_0
|
|
concat:
|
|
invokevirtual java/lang/String/concat(Ljava/lang/String;)Ljava/lang/String;
|
|
areturn
|
|
.end method
|
|
|