1 /*
2  * Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 
25 package org.graalvm.compiler.nodes.test;
26 
27 import org.junit.Test;
28 
29 import org.graalvm.compiler.core.test.GraalCompilerTest;
30 import org.graalvm.compiler.java.LargeLocalLiveness;
31 import org.graalvm.compiler.java.SmallLocalLiveness;
32 
33 public class LoopLivenessTest extends GraalCompilerTest {
34 
35     /**
36      * Exercise {@link SmallLocalLiveness} with 64 loops.
37      */
manyLoopsSmall()38     public static void manyLoopsSmall() {
39         for (int i = 0; i < 10; i++) {
40             for (int j = 0; j < 10; j++) {
41             }
42         }
43         for (int i = 0; i < 10; i++) {
44             for (int j = 0; j < 10; j++) {
45             }
46         }
47         for (int i = 0; i < 10; i++) {
48             for (int j = 0; j < 10; j++) {
49             }
50         }
51         for (int i = 0; i < 10; i++) {
52             for (int j = 0; j < 10; j++) {
53             }
54         }
55         for (int i = 0; i < 10; i++) {
56             for (int j = 0; j < 10; j++) {
57             }
58         }
59         for (int i = 0; i < 10; i++) {
60             for (int j = 0; j < 10; j++) {
61             }
62         }
63         for (int i = 0; i < 10; i++) {
64             for (int j = 0; j < 10; j++) {
65             }
66         }
67         for (int i = 0; i < 10; i++) {
68             for (int j = 0; j < 10; j++) {
69             }
70         }
71         for (int i = 0; i < 10; i++) {
72             for (int j = 0; j < 10; j++) {
73             }
74         }
75         for (int i = 0; i < 10; i++) {
76             for (int j = 0; j < 10; j++) {
77             }
78         }
79         for (int i = 0; i < 10; i++) {
80             for (int j = 0; j < 10; j++) {
81             }
82         }
83         for (int i = 0; i < 10; i++) {
84             for (int j = 0; j < 10; j++) {
85             }
86         }
87         for (int i = 0; i < 10; i++) {
88             for (int j = 0; j < 10; j++) {
89             }
90         }
91         for (int i = 0; i < 10; i++) {
92             for (int j = 0; j < 10; j++) {
93             }
94         }
95         for (int i = 0; i < 10; i++) {
96             for (int j = 0; j < 10; j++) {
97             }
98         }
99         for (int i = 0; i < 10; i++) {
100             for (int j = 0; j < 10; j++) {
101             }
102         }
103         for (int i = 0; i < 10; i++) {
104             for (int j = 0; j < 10; j++) {
105             }
106         }
107         for (int i = 0; i < 10; i++) {
108             for (int j = 0; j < 10; j++) {
109             }
110         }
111         for (int i = 0; i < 10; i++) {
112             for (int j = 0; j < 10; j++) {
113             }
114         }
115         for (int i = 0; i < 10; i++) {
116             for (int j = 0; j < 10; j++) {
117             }
118         }
119         for (int i = 0; i < 10; i++) {
120             for (int j = 0; j < 10; j++) {
121             }
122         }
123         for (int i = 0; i < 10; i++) {
124             for (int j = 0; j < 10; j++) {
125             }
126         }
127         for (int i = 0; i < 10; i++) {
128             for (int j = 0; j < 10; j++) {
129             }
130         }
131         for (int i = 0; i < 10; i++) {
132             for (int j = 0; j < 10; j++) {
133             }
134         }
135         for (int i = 0; i < 10; i++) {
136             for (int j = 0; j < 10; j++) {
137             }
138         }
139         for (int i = 0; i < 10; i++) {
140             for (int j = 0; j < 10; j++) {
141             }
142         }
143         for (int i = 0; i < 10; i++) {
144             for (int j = 0; j < 10; j++) {
145             }
146         }
147         for (int i = 0; i < 10; i++) {
148             for (int j = 0; j < 10; j++) {
149             }
150         }
151         for (int i = 0; i < 10; i++) {
152             for (int j = 0; j < 10; j++) {
153             }
154         }
155         for (int i = 0; i < 10; i++) {
156             for (int j = 0; j < 10; j++) {
157             }
158         }
159         for (int i = 0; i < 10; i++) {
160             for (int j = 0; j < 10; j++) {
161             }
162         }
163         for (int i = 0; i < 10; i++) {
164             for (int j = 0; j < 10; j++) {
165             }
166         }
167     }
168 
169     /**
170      * Exercise {@link LargeLocalLiveness} with 64 loops.
171      */
172     @SuppressWarnings("unused")
manyLoopsLarge()173     public static void manyLoopsLarge() {
174         int i0;
175         int i1;
176         int i2;
177         int i3;
178         int i4;
179         int i5;
180         int i6;
181         int i7;
182         int i8;
183         int i9;
184         int i10;
185         int i11;
186         int i12;
187         int i13;
188         int i14;
189         int i15;
190         int i16;
191         int i17;
192         int i18;
193         int i19;
194         int i20;
195         int i21;
196         int i22;
197         int i23;
198         int i24;
199         int i25;
200         int i26;
201         int i27;
202         int i28;
203         int i29;
204         int i30;
205         int i31;
206         int i32;
207         int i33;
208         int i34;
209         int i35;
210         int i36;
211         int i37;
212         int i38;
213         int i39;
214         int i40;
215         int i41;
216         int i42;
217         int i43;
218         int i44;
219         int i45;
220         int i46;
221         int i47;
222         int i48;
223         int i49;
224         int i50;
225         int i51;
226         int i52;
227         int i53;
228         int i54;
229         int i55;
230         int i56;
231         int i57;
232         int i58;
233         int i59;
234         int i60;
235         int i61;
236         int i62;
237         int i63;
238         for (int i = 0; i < 10; i++) {
239             for (int j = 0; j < 10; j++) {
240             }
241         }
242         for (int i = 0; i < 10; i++) {
243             for (int j = 0; j < 10; j++) {
244             }
245         }
246         for (int i = 0; i < 10; i++) {
247             for (int j = 0; j < 10; j++) {
248             }
249         }
250         for (int i = 0; i < 10; i++) {
251             for (int j = 0; j < 10; j++) {
252             }
253         }
254         for (int i = 0; i < 10; i++) {
255             for (int j = 0; j < 10; j++) {
256             }
257         }
258         for (int i = 0; i < 10; i++) {
259             for (int j = 0; j < 10; j++) {
260             }
261         }
262         for (int i = 0; i < 10; i++) {
263             for (int j = 0; j < 10; j++) {
264             }
265         }
266         for (int i = 0; i < 10; i++) {
267             for (int j = 0; j < 10; j++) {
268             }
269         }
270         for (int i = 0; i < 10; i++) {
271             for (int j = 0; j < 10; j++) {
272             }
273         }
274         for (int i = 0; i < 10; i++) {
275             for (int j = 0; j < 10; j++) {
276             }
277         }
278         for (int i = 0; i < 10; i++) {
279             for (int j = 0; j < 10; j++) {
280             }
281         }
282         for (int i = 0; i < 10; i++) {
283             for (int j = 0; j < 10; j++) {
284             }
285         }
286         for (int i = 0; i < 10; i++) {
287             for (int j = 0; j < 10; j++) {
288             }
289         }
290         for (int i = 0; i < 10; i++) {
291             for (int j = 0; j < 10; j++) {
292             }
293         }
294         for (int i = 0; i < 10; i++) {
295             for (int j = 0; j < 10; j++) {
296             }
297         }
298         for (int i = 0; i < 10; i++) {
299             for (int j = 0; j < 10; j++) {
300             }
301         }
302         for (int i = 0; i < 10; i++) {
303             for (int j = 0; j < 10; j++) {
304             }
305         }
306         for (int i = 0; i < 10; i++) {
307             for (int j = 0; j < 10; j++) {
308             }
309         }
310         for (int i = 0; i < 10; i++) {
311             for (int j = 0; j < 10; j++) {
312             }
313         }
314         for (int i = 0; i < 10; i++) {
315             for (int j = 0; j < 10; j++) {
316             }
317         }
318         for (int i = 0; i < 10; i++) {
319             for (int j = 0; j < 10; j++) {
320             }
321         }
322         for (int i = 0; i < 10; i++) {
323             for (int j = 0; j < 10; j++) {
324             }
325         }
326         for (int i = 0; i < 10; i++) {
327             for (int j = 0; j < 10; j++) {
328             }
329         }
330         for (int i = 0; i < 10; i++) {
331             for (int j = 0; j < 10; j++) {
332             }
333         }
334         for (int i = 0; i < 10; i++) {
335             for (int j = 0; j < 10; j++) {
336             }
337         }
338         for (int i = 0; i < 10; i++) {
339             for (int j = 0; j < 10; j++) {
340             }
341         }
342         for (int i = 0; i < 10; i++) {
343             for (int j = 0; j < 10; j++) {
344             }
345         }
346         for (int i = 0; i < 10; i++) {
347             for (int j = 0; j < 10; j++) {
348             }
349         }
350         for (int i = 0; i < 10; i++) {
351             for (int j = 0; j < 10; j++) {
352             }
353         }
354         for (int i = 0; i < 10; i++) {
355             for (int j = 0; j < 10; j++) {
356             }
357         }
358         for (int i = 0; i < 10; i++) {
359             for (int j = 0; j < 10; j++) {
360             }
361         }
362         for (int i = 0; i < 10; i++) {
363             for (int j = 0; j < 10; j++) {
364             }
365         }
366     }
367 
368     @Test
testManyLoopsSmall()369     public void testManyLoopsSmall() {
370         test("manyLoopsSmall");
371     }
372 
373     @Test
testManyLoopsLarge()374     public void testManyLoopsLarge() {
375         test("manyLoopsLarge");
376     }
377 }
378