* configure.ac: New switch for disabling -O2 (--disable-optimizations).
[cacao.git] / tests / regression / jasmin / test_dup_x2_interface_slots.j
1 .class public test_dup_x2_interface_slots
2 .super java/lang/Object
3
4 ; ======================================================================
5
6 .method public <init>()V
7    aload_0
8    invokenonvirtual java/lang/Object/<init>()V
9    return
10 .end method
11
12 ; ======================================================================
13
14 .method public static checkI(I)V
15         .limit locals 1
16         .limit stack 10
17         getstatic java/lang/System/out Ljava/io/PrintStream;
18         iload_0
19         invokevirtual java/io/PrintStream/println(I)V
20         return
21 .end method
22
23 ; ======================================================================
24
25 .method public static main([Ljava/lang/String;)V
26         .limit stack 4
27         .limit locals 2
28
29         ldc 4
30         istore 1
31
32         ldc 18
33         ldc 100
34         ldc 91
35
36         ; stack is 18 100 91 (top)
37
38         ; --------------------------------------------------
39
40         ; "ROT3" performed 5 times
41 loop:
42         dup_x2
43         iinc 1 -1
44         pop
45         iload 1
46         ifge loop
47
48         ; --------------------------------------------------
49
50         ; stack should be 100 91 18 (top)
51
52         invokestatic test_dup_x2_interface_slots/checkI(I)V
53         ; OUTPUT: 18
54         invokestatic test_dup_x2_interface_slots/checkI(I)V
55         ; OUTPUT: 91
56         invokestatic test_dup_x2_interface_slots/checkI(I)V
57         ; OUTPUT: 100
58
59         ldc 6
60         istore 1
61
62         ldc 28
63         ldc 200
64         ldc 291
65
66         ; stack is 28 200 291 (top)
67
68         ; --------------------------------------------------
69
70         ; "ROT3" performed 7 times
71 loop2:
72         iinc 1 -1
73         dup_x2
74         pop
75         iload 1
76         ifge loop2
77
78         ; --------------------------------------------------
79
80         ; stack should be 291 28 200
81
82         invokestatic test_dup_x2_interface_slots/checkI(I)V
83         ; OUTPUT: 200
84         invokestatic test_dup_x2_interface_slots/checkI(I)V
85         ; OUTPUT: 28
86         invokestatic test_dup_x2_interface_slots/checkI(I)V
87         ; OUTPUT: 291
88
89         return
90 .end method
91