Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/compiler/escapeAnalysis/Test6689060.java
41152 views
1
/*
2
* Copyright (c) 2008, 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
* @test
26
* @bug 6689060
27
* @summary Escape Analysis does not work with Compressed Oops
28
*
29
* @run main/othervm -XX:+IgnoreUnrecognizedVMOptions -Xbatch -XX:+EliminateAutoBox -XX:AutoBoxCacheMax=20000
30
* -XX:CompileCommand=exclude,compiler.escapeAnalysis.Test6689060::dummy
31
* compiler.escapeAnalysis.Test6689060
32
*/
33
34
package compiler.escapeAnalysis;
35
36
import java.lang.reflect.Array;
37
38
public class Test6689060 {
39
static class Point {
40
int x;
41
int y;
42
Point next;
43
int ax[];
44
int ay[];
45
Point pax[];
46
Point pay[];
47
48
public Point getNext() {
49
return next;
50
}
51
}
52
53
void dummy() {
54
// Empty method to verify correctness of DebugInfo.
55
// Use -XX:CompileCommand=exclude,Test.dummy
56
}
57
58
int ival(int i) {
59
return i * 2;
60
}
61
62
int test80(int y, int l, int i) {
63
Point p = new Point();
64
p.ax = new int[2];
65
p.ay = new int[2];
66
int x = 3;
67
p.ax[0] = x;
68
p.ay[1] = 3 * x + y;
69
dummy();
70
return p.ax[0] * p.ay[1];
71
}
72
73
int test81(int y, int l, int i) {
74
Point p = new Point();
75
p.ax = new int[2];
76
p.ay = new int[2];
77
int x = 3;
78
p.ax[0] = x;
79
p.ay[1] = 3 * x + y;
80
dummy();
81
return p.ax[0] * p.ay[1];
82
}
83
84
85
int test44(int y) {
86
Point p1 = new Point();
87
p1.x = ival(3);
88
dummy();
89
p1.y = 3 * p1.x + y;
90
return p1.y;
91
}
92
93
int test43(int y) {
94
Point p1 = new Point();
95
if ((y & 1) == 1) {
96
p1.x = ival(3);
97
} else {
98
p1.x = ival(5);
99
}
100
dummy();
101
p1.y = 3 * p1.x + y;
102
return p1.y;
103
}
104
105
int test42(int y) {
106
Point p1 = new Point();
107
p1.x = 3;
108
for (int i = 0; i < y; i++) {
109
if ((i & 1) == 1) {
110
p1.x += 4;
111
}
112
}
113
p1.y = 3 * y + p1.x;
114
return p1.y;
115
}
116
117
int test40(int y) {
118
Point p1 = new Point();
119
if ((y & 1) == 1) {
120
p1.x = 3;
121
} else {
122
p1.x = 5;
123
}
124
p1.y = 3 * p1.x + y;
125
return p1.y;
126
}
127
128
int test41(int y) {
129
Point p1 = new Point();
130
if ((y & 1) == 1) {
131
p1.x += 4;
132
} else {
133
p1.x += 5;
134
}
135
p1.y = 3 * p1.x + y;
136
return p1.y;
137
}
138
139
Point test00(int y) {
140
int x = 3;
141
Point p = new Point();
142
p.x = x;
143
p.y = 3 * x + y;
144
return p;
145
}
146
147
Point test01(int y) {
148
int x = 3;
149
Point p = new Point();
150
p.x = x;
151
p.y = 3 * x + y;
152
dummy();
153
return p;
154
}
155
156
Point test02(int y) {
157
int x = 3;
158
Point p1 = null;
159
for (int i = 0; i < y; i++) {
160
Point p2 = new Point();
161
p2.x = x;
162
p2.y = 3 * y + x;
163
p2.next = p1;
164
p1 = p2;
165
}
166
return p1;
167
}
168
169
Point test03(int y) {
170
int x = 3;
171
Point p1 = null;
172
for (int i = 0; i < y; i++) {
173
Point p2 = new Point();
174
p2.x = x;
175
p2.y = 3 * y + x;
176
p2.next = p1;
177
p1 = p2;
178
}
179
dummy();
180
return p1;
181
}
182
183
Point test04(int y) {
184
int x = 3;
185
Point p1 = null;
186
for (int i = 0; i < y; i++) {
187
Point p2 = new Point();
188
p2.x = x;
189
p2.y = 3 * y + x;
190
p2.next = p1;
191
dummy();
192
p1 = p2;
193
}
194
return p1;
195
}
196
197
int test05(int y) {
198
int x = 3;
199
Point p1 = new Point();
200
for (int i = 0; i < y; i++) {
201
Point p2 = new Point();
202
p2.x = x;
203
p2.y = 3 * y + x;
204
p1.next = p2;
205
p1 = p2;
206
}
207
return p1.y;
208
}
209
210
int test0(int y) {
211
int x = 3;
212
Point p = new Point();
213
p.x = x;
214
p.y = 3 * x + y;
215
dummy();
216
return p.x * p.y;
217
}
218
219
int test1(int y) {
220
Point p = new Point();
221
if ((y & 1) == 1) {
222
p = new Point(); // Kill previous
223
}
224
int x = 3;
225
p.x = x;
226
p.y = 3 * x + y;
227
dummy();
228
return p.x * p.y;
229
}
230
231
int test2(int y) {
232
Point p1 = new Point();
233
Point p2 = new Point();
234
p1.x = 3;
235
p2.x = 4;
236
p1.y = 3 * p2.x + y;
237
p2.y = 3 * p1.x + y;
238
dummy();
239
return p1.y * p2.y;
240
}
241
242
int test3(int y, Point p1) {
243
Point p2 = new Point();
244
p1.x = 3;
245
p2.x = 4;
246
p1.y = 3 * p2.x + y;
247
p2.y = 3 * p1.x + y;
248
dummy();
249
return p1.y * p2.y;
250
}
251
252
int test4(int y) {
253
Point p1 = new Point();
254
Point p2 = new Point();
255
if ((y & 1) == 1) {
256
p1.x = 3;
257
p2.x = 4;
258
} else {
259
p1.x = 5;
260
p2.x = 6;
261
}
262
p1.y = 3 * p2.x + y;
263
p2.y = 3 * p1.x + y;
264
dummy();
265
return p1.y * p2.y;
266
}
267
268
int test5(int y, Point p1) {
269
Point p2 = new Point();
270
if ((y & 1) == 1) {
271
p1.x = 3;
272
p2.x = 4;
273
} else {
274
p1.x = 5;
275
p2.x = 6;
276
}
277
p1.y = 3 * p2.x + y;
278
p2.y = 3 * p1.x + y;
279
dummy();
280
return p1.y * p2.y;
281
}
282
283
int test6(int y) {
284
Point p1 = new Point();
285
Point p2 = new Point();
286
p1.next = p2;
287
if ((y & 1) == 1) {
288
p1.x = 3;
289
p1.getNext().x = 4;
290
} else {
291
p1.x = 5;
292
p1.getNext().x = 6;
293
}
294
p1.y = 3 * p2.x + y;
295
p2.y = 3 * p1.x + y;
296
dummy();
297
return p1.y * p2.y;
298
}
299
300
int test7(int y, Point p1) {
301
Point p2 = new Point();
302
p1.next = p2;
303
if ((y & 1) == 1) {
304
p1.x = 3;
305
p1.getNext().x = 4;
306
} else {
307
p1.x = 5;
308
p1.getNext().x = 6;
309
}
310
p1.y = 3 * p2.x + y;
311
p2.y = 3 * p1.x + y;
312
dummy();
313
return p1.y * p2.y;
314
}
315
316
int test8(int y, int l, int i) {
317
Point p = new Point();
318
p.ax = new int[l];
319
p.ay = new int[l];
320
int x = 3;
321
p.ax[i] = x;
322
p.ay[i] = 3 * x + y;
323
dummy();
324
return p.ax[i] * p.ay[i];
325
}
326
327
int test9(int y, int l, int i) {
328
Point p = new Point();
329
p.pax = new Point[l];
330
p.pay = new Point[l];
331
p.pax[i] = new Point();
332
p.pay[i] = new Point();
333
p.pax[i].x = 3;
334
p.pay[i].x = 4;
335
p.pax[i].y = 3 * p.pay[i].x + y;
336
p.pay[i].y = 3 * p.pax[i].x + y;
337
dummy();
338
return p.pax[i].y * p.pay[i].y;
339
}
340
341
int test10(int y, int l, int i, Class cls) {
342
Point p = new Point();
343
try {
344
p.pax = (Point[]) Array.newInstance(cls, l);
345
p.pax[i] = (Point) cls.newInstance();
346
} catch (java.lang.InstantiationException ex) {
347
return 0;
348
} catch (java.lang.IllegalAccessException ex) {
349
return 0;
350
}
351
p.pax[i].x = 3;
352
p.pax[i].y = 3 * p.pax[i].x + y;
353
dummy();
354
return p.pax[i].x * p.pax[i].y;
355
}
356
357
int test11(int y) {
358
Point p1 = new Point();
359
Point p2 = new Point();
360
p1.next = p2;
361
if ((y & 1) == 1) {
362
p1.x = 3;
363
p1.next.x = 4;
364
} else {
365
p1.x = 5;
366
p1.next.x = 6;
367
}
368
p1.y = 3 * p1.next.x + y;
369
p1.next.y = 3 * p1.x + y;
370
dummy();
371
return p1.y * p1.next.y;
372
}
373
374
int test12(int y) {
375
Point p1 = new Point();
376
p1.next = p1;
377
if ((y & 1) == 1) {
378
p1.x = 3;
379
p1.next.x = 4;
380
} else {
381
p1.x = 5;
382
p1.next.x = 6;
383
}
384
p1.y = 3 * p1.next.x + y;
385
p1.next.y = 3 * p1.x + y;
386
dummy();
387
return p1.y * p1.next.y;
388
}
389
390
391
public static void main(String args[]) {
392
Test6689060 tsr = new Test6689060();
393
Point p = new Point();
394
Point ptmp = p;
395
Class cls = Point.class;
396
int y = 0;
397
for (int i = 0; i < 10000; i++) {
398
ptmp.next = tsr.test00(1);
399
ptmp.next = tsr.test01(1);
400
ptmp.next = tsr.test02(1);
401
ptmp.next = tsr.test03(1);
402
ptmp.next = tsr.test04(1);
403
404
y = tsr.test05(1);
405
406
y = tsr.test80(y, 1, 0);
407
y = tsr.test81(y, 1, 0);
408
409
y = tsr.test44(y);
410
y = tsr.test43(y);
411
y = tsr.test42(y);
412
y = tsr.test40(y);
413
y = tsr.test41(y);
414
415
y = tsr.test0(y);
416
y = tsr.test1(y);
417
y = tsr.test2(y);
418
y = tsr.test3(y, p);
419
y = tsr.test4(y);
420
y = tsr.test5(y, p);
421
y = tsr.test6(y);
422
y = tsr.test7(y, p);
423
y = tsr.test8(y, 1, 0);
424
y = tsr.test9(y, 1, 0);
425
y = tsr.test10(y, 1, 0, cls);
426
y = tsr.test11(y);
427
y = tsr.test12(y);
428
}
429
for (int i = 0; i < 10000; i++) {
430
ptmp.next = tsr.test00(1);
431
ptmp.next = tsr.test01(1);
432
ptmp.next = tsr.test02(1);
433
ptmp.next = tsr.test03(1);
434
ptmp.next = tsr.test04(1);
435
436
y = tsr.test05(1);
437
438
y = tsr.test80(y, 1, 0);
439
y = tsr.test81(y, 1, 0);
440
441
y = tsr.test44(y);
442
y = tsr.test43(y);
443
y = tsr.test42(y);
444
y = tsr.test40(y);
445
y = tsr.test41(y);
446
447
y = tsr.test0(y);
448
y = tsr.test1(y);
449
y = tsr.test2(y);
450
y = tsr.test3(y, p);
451
y = tsr.test4(y);
452
y = tsr.test5(y, p);
453
y = tsr.test6(y);
454
y = tsr.test7(y, p);
455
y = tsr.test8(y, 1, 0);
456
y = tsr.test9(y, 1, 0);
457
y = tsr.test10(y, 1, 0, cls);
458
y = tsr.test11(y);
459
y = tsr.test12(y);
460
}
461
for (int i = 0; i < 10000; i++) {
462
ptmp.next = tsr.test00(1);
463
ptmp.next = tsr.test01(1);
464
ptmp.next = tsr.test02(1);
465
ptmp.next = tsr.test03(1);
466
ptmp.next = tsr.test04(1);
467
468
y = tsr.test05(1);
469
470
y = tsr.test80(y, 1, 0);
471
y = tsr.test81(y, 1, 0);
472
473
y = tsr.test44(y);
474
y = tsr.test43(y);
475
y = tsr.test42(y);
476
y = tsr.test40(y);
477
y = tsr.test41(y);
478
479
y = tsr.test0(y);
480
y = tsr.test1(y);
481
y = tsr.test2(y);
482
y = tsr.test3(y, p);
483
y = tsr.test4(y);
484
y = tsr.test5(y, p);
485
y = tsr.test6(y);
486
y = tsr.test7(y, p);
487
y = tsr.test8(y, 1, 0);
488
y = tsr.test9(y, 1, 0);
489
y = tsr.test10(y, 1, 0, cls);
490
y = tsr.test11(y);
491
y = tsr.test12(y);
492
}
493
494
int z = 0;
495
y = tsr.test80(0, 1, 0);
496
z += y;
497
System.out.println("After 'test80' y=" + y);
498
y = tsr.test81(0, 1, 0);
499
z += y;
500
System.out.println("After 'test81' y=" + y);
501
502
y = tsr.test44(0);
503
z += y;
504
System.out.println("After 'test44' y=" + y);
505
y = tsr.test43(0);
506
z += y;
507
System.out.println("After 'test43' y=" + y);
508
y = tsr.test42(0);
509
z += y;
510
System.out.println("After 'test42' y=" + y);
511
y = tsr.test40(0);
512
z += y;
513
System.out.println("After 'test40' y=" + y);
514
y = tsr.test41(0);
515
z += y;
516
System.out.println("After 'test41' y=" + y);
517
518
ptmp.next = tsr.test00(1);
519
z += y;
520
System.out.println("After 'test00' p.y=" + ptmp.next.y);
521
ptmp.next = tsr.test01(1);
522
z += y;
523
System.out.println("After 'test01' p.y=" + ptmp.next.y);
524
ptmp.next = tsr.test02(1);
525
z += y;
526
System.out.println("After 'test02' p.y=" + ptmp.next.y);
527
ptmp.next = tsr.test03(1);
528
z += y;
529
System.out.println("After 'test03' p.y=" + ptmp.next.y);
530
ptmp.next = tsr.test04(1);
531
z += y;
532
System.out.println("After 'test04' p.y=" + ptmp.next.y);
533
534
y = tsr.test05(1);
535
z += y;
536
System.out.println("After 'test05' y=" + y);
537
538
y = tsr.test0(0);
539
z += y;
540
System.out.println("After 'test0' y=" + y);
541
y = tsr.test1(0);
542
z += y;
543
System.out.println("After 'test1' y=" + y);
544
y = tsr.test2(0);
545
z += y;
546
System.out.println("After 'test2' y=" + y);
547
y = tsr.test3(0, new Point());
548
z += y;
549
System.out.println("After 'test3' y=" + y);
550
y = tsr.test4(0);
551
z += y;
552
System.out.println("After 'test4' y=" + y);
553
y = tsr.test5(0, new Point());
554
z += y;
555
System.out.println("After 'test5' y=" + y);
556
y = tsr.test6(0);
557
z += y;
558
System.out.println("After 'test6' y=" + y);
559
y = tsr.test7(0, new Point());
560
z += y;
561
System.out.println("After 'test7' y=" + y);
562
y = tsr.test8(0, 1, 0);
563
z += y;
564
System.out.println("After 'test8' y=" + y);
565
y = tsr.test9(0, 1, 0);
566
z += y;
567
System.out.println("After 'test9' y=" + y);
568
y = tsr.test10(0, 1, 0, cls);
569
z += y;
570
System.out.println("After 'test10' y=" + y);
571
y = tsr.test11(0);
572
z += y;
573
System.out.println("After 'test11' y=" + y);
574
y = tsr.test12(0);
575
z += y;
576
System.out.println("After 'test12' y=" + y);
577
System.out.println("Sum of y =" + z);
578
}
579
}
580
581