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