* src/vm/jit/stack.c (stack_analyse): Store vartop in jitdata.
[cacao.git] / tests / regression / jasmin / test_many_dup2_x1.j
1 .class public test_many_dup2_x1
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 check(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 63
27         .limit locals 2
28
29         ldc 100
30         ldc 42
31         ldc -1
32
33         ; 30 times
34
35         dup2_x1
36         dup2_x1
37         dup2_x1
38         dup2_x1
39         dup2_x1
40         dup2_x1
41         dup2_x1
42         dup2_x1
43         dup2_x1
44         dup2_x1
45
46         dup2_x1
47         dup2_x1
48         dup2_x1
49         dup2_x1
50         dup2_x1
51         dup2_x1
52         dup2_x1
53         dup2_x1
54         dup2_x1
55         dup2_x1
56
57         dup2_x1
58         dup2_x1
59         dup2_x1
60         dup2_x1
61         dup2_x1
62         dup2_x1
63         dup2_x1
64         dup2_x1
65         dup2_x1
66         dup2_x1
67
68         invokestatic test_many_dup2_x1/check(I)V
69         ; OUTPUT: -1
70         invokestatic test_many_dup2_x1/check(I)V
71         ; OUTPUT: 42
72         invokestatic test_many_dup2_x1/check(I)V
73         ; OUTPUT: 100
74
75         invokestatic test_many_dup2_x1/check(I)V
76         ; OUTPUT: -1
77         invokestatic test_many_dup2_x1/check(I)V
78         ; OUTPUT: 42
79
80         ; pop 56 slots
81
82         pop2
83         pop2
84         pop2
85         pop2
86         pop2
87         pop2
88         pop2
89         pop2
90         pop2
91         pop2
92
93         pop2
94         pop2
95         pop2
96         pop2
97         pop2
98         pop2
99         pop2
100         pop2
101         pop2
102         pop2
103
104         pop2
105         pop2
106         pop2
107         pop2
108         pop2
109         pop2
110         pop2
111         pop2
112
113         ; Play it again, Sam!
114
115         ; 42
116         ; -1
117         ldc 100
118
119         dup2_x1
120         dup2_x1
121         dup2_x1
122         dup2_x1
123         dup2_x1
124         dup2_x1
125         dup2_x1
126         dup2_x1
127         dup2_x1
128         dup2_x1
129
130         dup2_x1
131         dup2_x1
132         dup2_x1
133         dup2_x1
134         dup2_x1
135         dup2_x1
136         dup2_x1
137         dup2_x1
138         dup2_x1
139         dup2_x1
140
141         dup2_x1
142         dup2_x1
143         dup2_x1
144         dup2_x1
145         dup2_x1
146         dup2_x1
147         dup2_x1
148         dup2_x1
149         dup2_x1
150         dup2_x1
151
152         invokestatic test_many_dup2_x1/check(I)V
153         ; OUTPUT: 100
154         invokestatic test_many_dup2_x1/check(I)V
155         ; OUTPUT: -1
156         invokestatic test_many_dup2_x1/check(I)V
157         ; OUTPUT: 42
158
159         invokestatic test_many_dup2_x1/check(I)V
160         ; OUTPUT: 100
161         invokestatic test_many_dup2_x1/check(I)V
162         ; OUTPUT: -1
163
164         return
165 .end method