Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/vmTestbase/jit/inline/inline007/inline007.java
40948 views
1
/*
2
* Copyright (c) 2008, 2020, 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
*
27
* @summary converted from VM Testbase jit/inline/inline007.
28
* VM Testbase keywords: [jit, quick]
29
* VM Testbase readme:
30
* Inline007 is similar to inline004 in that it tests inlining.
31
* Inline004 still functions, but is not testing inlining, in
32
* JDK 1.2e.
33
*
34
* @library /vmTestbase
35
* /test/lib
36
* @run main/othervm jit.inline.inline007.inline007
37
*/
38
39
package jit.inline.inline007;
40
41
42
import java.io.ByteArrayOutputStream;
43
import java.io.IOException;
44
45
import nsk.share.TestFailure;
46
import nsk.share.GoldChecker;
47
48
class inline007_1 {
49
final protected static int[] inlineObj = { 1, 2 };
50
protected static int inlineInt = 3; /* Not final */
51
}
52
53
class inline007Sup extends inline007_1 {
54
private int i1 = 0;
55
Object obj1 = inline007_1.inlineObj;
56
Object obj2 = inline007_1.inlineObj;
57
Object obj3 = inline007_1.inlineObj;
58
59
static int MPAT_Const4_fs_0() {
60
return 1;
61
}
62
static Object MPAT_Const4_fs_1() {
63
return null;
64
}
65
static int MPAT_GetStatic4_fs_0() {
66
return inlineInt;
67
}
68
static Object MPAT_GetStatic4_fs_1() {
69
return inlineObj;
70
}
71
int MPAT_Const4_fi_0() {
72
return 1;
73
}
74
Object MPAT_Const4_fi_1() {
75
return null;
76
}
77
int MPAT_GetField4_fi_0() {
78
return i1;
79
}
80
Object MPAT_GetField4_fi_1() {
81
return obj1;
82
}
83
void MPAT_PutField4_fi_0(int ival) {
84
i1 = ival;
85
return;
86
}
87
void MPAT_PutField4_fi_1(Object oval) {
88
obj1 = oval;
89
return;
90
}
91
void MPAT_PutField4Const4_fi() {
92
i1 = -1;
93
return;
94
}
95
int MPAT_GetStatic4_fi_0() {
96
return inlineInt;
97
}
98
Object MPAT_GetStatic4_fi_1() {
99
return inlineObj;
100
}
101
Object MPAT_Handle_fi() {
102
return this;
103
}
104
}
105
106
class inline007Sub extends inline007Sup {
107
private int i1 = 0;
108
Object obj1 = inline007_1.inlineObj;
109
Object obj2 = inline007_1.inlineObj;
110
Object obj3 = inline007_1.inlineObj;
111
112
static int MPAT_Const4_fs_0() {
113
return 1;
114
}
115
static Object MPAT_Const4_fs_1() {
116
return null;
117
}
118
static int MPAT_GetStatic4_fs_0() {
119
return inlineInt;
120
}
121
static Object MPAT_GetStatic4_fs_1() {
122
return inlineObj;
123
}
124
int MPAT_Const4_fi_0() {
125
return 1;
126
}
127
Object MPAT_Const4_fi_1() {
128
return null;
129
}
130
int MPAT_GetField4_fi_0() {
131
return i1;
132
}
133
Object MPAT_GetField4_fi_1() {
134
return obj1;
135
}
136
void MPAT_PutField4_fi_0(int ival) {
137
i1 = ival;
138
return;
139
}
140
void MPAT_PutField4_fi_1(Object oval) {
141
obj1 = oval;
142
return;
143
}
144
void MPAT_PutField4Const4_fi() {
145
i1 = -1;
146
return;
147
}
148
int MPAT_GetStatic4_fi_0() {
149
return inlineInt;
150
}
151
Object MPAT_GetStatic4_fi_1() {
152
return inlineObj;
153
}
154
Object MPAT_Handle_fi() {
155
return this;
156
}
157
}
158
159
public class inline007 extends inline007_1 {
160
public static final GoldChecker goldChecker = new GoldChecker( "inline007" );
161
162
static int[] myIters = new int[14];
163
static int[] errFlag = new int[14];
164
static int pFlag = 0;
165
final static int ITERS=5;
166
int intTarg1 = 0;
167
int intTarg2 = 0;
168
Object objTarg1 = null;
169
Object objTarg2 = null;
170
inline007Sub inline007sub = new inline007Sub();
171
inline007Sup inline007sup = inline007sub;
172
173
private void runFinals () {
174
int jcount = 0;
175
int icount = 0;
176
177
if (pFlag==2) inline007.goldChecker.print("MPAT_Const4_fs_0");
178
try {
179
for (jcount=0; jcount<ITERS; jcount++) {
180
intTarg1 = inline007Sub.MPAT_Const4_fs_0();
181
intTarg2 = inline007Sup.MPAT_Const4_fs_0();
182
if (intTarg1 != intTarg2) errFlag[icount]++;
183
}
184
} catch (Exception e) {
185
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
186
} finally {
187
myIters[icount] = jcount;
188
if (jcount != ITERS) errFlag[icount]++;
189
if (pFlag==2) inline007.goldChecker.println();
190
}
191
icount++;
192
193
if (pFlag==2) inline007.goldChecker.print("MPAT_Const4_fs_1");
194
try {
195
for (jcount=0; jcount<ITERS; jcount++) {
196
objTarg2 = inline007Sub.MPAT_Const4_fs_1();
197
objTarg1 = inline007Sup.MPAT_Const4_fs_1();
198
if (objTarg2 != objTarg1) errFlag[icount]++;
199
}
200
} catch (Exception e) {
201
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
202
} finally {
203
myIters[icount] = jcount;
204
if (jcount != ITERS) errFlag[icount]++;
205
if (pFlag==2) inline007.goldChecker.println();
206
}
207
icount++;
208
209
210
if (pFlag==2) inline007.goldChecker.print("MPAT_GetStatic4_fs_0");
211
try {
212
for (jcount=0; jcount<ITERS; jcount++) {
213
intTarg2 = inline007Sub.MPAT_GetStatic4_fs_0();
214
intTarg1 = inline007Sup.MPAT_GetStatic4_fs_0();
215
if (intTarg1 != intTarg2) errFlag[icount]++;
216
}
217
} catch (Exception e) {
218
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
219
} finally {
220
myIters[icount] = jcount;
221
if (jcount != ITERS) errFlag[icount]++;
222
if (pFlag==2) inline007.goldChecker.println();
223
}
224
icount++;
225
226
227
if (pFlag==2) inline007.goldChecker.print("MPAT_GetStatic4_fs_1");
228
try {
229
for (jcount=0; jcount<ITERS; jcount++) {
230
objTarg2 = inline007Sub.MPAT_GetStatic4_fs_1();
231
objTarg1 = inline007Sup.MPAT_GetStatic4_fs_1();
232
if (objTarg1 != objTarg2) errFlag[icount]++;
233
}
234
} catch (Exception e) {
235
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
236
} finally {
237
myIters[icount] = jcount;
238
if (jcount != ITERS) errFlag[icount]++;
239
if (pFlag==2) inline007.goldChecker.println();
240
}
241
icount++;
242
243
244
/* Check inlining of instance methods */
245
if (pFlag==2) inline007.goldChecker.print("MPAT_Const4_fi_0");
246
try {
247
for (jcount=0; jcount<ITERS; jcount++) {
248
intTarg1 = inline007sub.MPAT_Const4_fi_0();
249
intTarg2 = inline007sup.MPAT_Const4_fi_0();
250
if (intTarg1 != intTarg2) errFlag[icount]++;
251
}
252
} catch (Exception e) {
253
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
254
} finally {
255
myIters[icount] = jcount;
256
if (jcount != ITERS) errFlag[icount]++;
257
if (pFlag==2) inline007.goldChecker.println();
258
}
259
icount++;
260
261
if (pFlag==2) inline007.goldChecker.print("MPAT_Const4_fi_1");
262
try {
263
for (jcount=0; jcount<ITERS; jcount++) {
264
objTarg1 = inline007sub.MPAT_Const4_fi_1();
265
objTarg2 = inline007sup.MPAT_Const4_fi_1();
266
if (objTarg1 != objTarg2) errFlag[icount]++;
267
}
268
} catch (Exception e) {
269
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
270
} finally {
271
myIters[icount] = jcount;
272
if (jcount != ITERS) errFlag[icount]++;
273
if (pFlag==2) inline007.goldChecker.println();
274
}
275
icount++;
276
277
if (pFlag==2) inline007.goldChecker.print("MPAT_GetStatic4_fi_0");
278
try {
279
for (jcount=0; jcount<ITERS; jcount++) {
280
intTarg2 = inline007sub.MPAT_GetStatic4_fi_0();
281
intTarg1 = inline007sup.MPAT_GetStatic4_fi_0();
282
if (intTarg1 != intTarg2) errFlag[icount]++;
283
}
284
} catch (Exception e) {
285
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
286
} finally {
287
myIters[icount] = jcount;
288
if (jcount != ITERS) errFlag[icount]++;
289
if (pFlag==2) inline007.goldChecker.println();
290
}
291
if (pFlag==2) inline007.goldChecker.print("MPAT_GetStatic4_fi_1");
292
try {
293
for (jcount=0; jcount<ITERS; jcount++) {
294
objTarg2 = inline007sub.MPAT_GetStatic4_fi_1();
295
objTarg1 = inline007sup.MPAT_GetStatic4_fi_1();
296
if (objTarg1 != objTarg2) errFlag[icount]++;
297
}
298
} catch (Exception e) {
299
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
300
} finally {
301
myIters[icount] = jcount;
302
if (jcount != ITERS) errFlag[icount]++;
303
if (pFlag==2) inline007.goldChecker.println();
304
}
305
icount++;
306
307
if (pFlag==2) inline007.goldChecker.print("MPAT_GetField4_fi_0");
308
try {
309
for (jcount=0; jcount<ITERS; jcount++) {
310
intTarg1 = inline007sub.MPAT_GetField4_fi_0();
311
intTarg2 = inline007sup.MPAT_GetField4_fi_0();
312
if (intTarg1 != intTarg2) errFlag[icount]++;
313
}
314
} catch (Exception e) {
315
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
316
} finally {
317
myIters[icount] = jcount;
318
if (jcount != ITERS) errFlag[icount]++;
319
if (pFlag==2) inline007.goldChecker.println();
320
}
321
icount++;
322
323
if (pFlag==2) inline007.goldChecker.print("MPAT_GetField4_fi_1");
324
try {
325
for (jcount=0; jcount<ITERS; jcount++) {
326
objTarg2 = inline007sub.MPAT_GetField4_fi_1();
327
objTarg1 = inline007sup.MPAT_GetField4_fi_1();
328
if (objTarg1 != objTarg2) errFlag[icount]++;
329
}
330
} catch (Exception e) {
331
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
332
} finally {
333
myIters[icount] = jcount;
334
if (jcount != ITERS) errFlag[icount]++;
335
if (pFlag==2) inline007.goldChecker.println();
336
}
337
icount++;
338
339
if (pFlag==2) inline007.goldChecker.print("MPAT_PutField4_fi_0");
340
try {
341
for (jcount=0; jcount<ITERS; jcount++) {
342
inline007sub.MPAT_PutField4_fi_0(10);
343
intTarg1 = inline007sup.MPAT_GetField4_fi_0();
344
if (intTarg1 != 10) errFlag[icount]++;
345
}
346
} catch (Exception e) {
347
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
348
} finally {
349
myIters[icount] = jcount;
350
if (jcount != ITERS) errFlag[icount]++;
351
if (pFlag==2) inline007.goldChecker.println();
352
}
353
icount++;
354
355
if (pFlag==2) inline007.goldChecker.print("MPAT_PutField4_fi_1");
356
try {
357
for (jcount=0; jcount<ITERS; jcount++) {
358
inline007sub.MPAT_PutField4_fi_1("String1");
359
objTarg1 = inline007sub.MPAT_GetField4_fi_1();
360
if (objTarg1 != "String1") errFlag[icount]++;
361
}
362
} catch (Exception e) {
363
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
364
} finally {
365
myIters[icount] = jcount;
366
if (jcount != ITERS) errFlag[icount]++;
367
if (pFlag==2) inline007.goldChecker.println();
368
}
369
icount++;
370
371
if (pFlag==2) inline007.goldChecker.print("MPAT_PutField4Const4_fi");
372
try {
373
for (jcount=0; jcount<ITERS; jcount++) {
374
inline007sub.MPAT_PutField4Const4_fi();
375
intTarg2 = inline007sup.MPAT_GetField4_fi_0();
376
if (intTarg2 != -1) errFlag[icount]++;
377
}
378
} catch (Exception e) {
379
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
380
} finally {
381
myIters[icount] = jcount;
382
if (pFlag==2) inline007.goldChecker.println();
383
}
384
icount++;
385
386
if (pFlag==2) inline007.goldChecker.print("MPAT_Handle_fi");
387
try {
388
for (jcount=0; jcount<ITERS; jcount++) {
389
objTarg1 = inline007sub.MPAT_Handle_fi();
390
objTarg2 = inline007sup.MPAT_Handle_fi();
391
}
392
} catch (Exception e) {
393
if (pFlag==2) inline007.goldChecker.print(": iteration="+(jcount+1)+": "+e);
394
} finally {
395
myIters[icount] = jcount;
396
if (jcount != ITERS) errFlag[icount]++;
397
if (pFlag==2) inline007.goldChecker.println();
398
}
399
icount++;
400
}
401
402
403
public static int result() {
404
int ierr = 0;
405
String state = null;
406
ByteArrayOutputStream baos = new ByteArrayOutputStream(80);
407
byte[] ba = new byte[80];
408
String s = null;
409
410
String[] label = new String[14];
411
label[0] = new String("Const4 class method (int) ");
412
label[1] = new String("Const4 class method (ref) ");
413
label[2] = new String("GetStatic4 class method (int) ");
414
label[3] = new String("GetStatic4 class method (ref) ");
415
label[4] = new String("Const4 instance method (int) ");
416
label[5] = new String("Const4 instance method (ref) ");
417
label[6] = new String("GetStatic4 instance method (int)");
418
label[7] = new String("GetStatic4 instance method (ref)");
419
label[8] = new String("GetField4 instance method (int) ");
420
label[9] = new String("GetField4 instance method (ref) ");
421
label[10] = new String("PutField4 instance method (int) ");
422
label[11] = new String("PutField4 instance method (ref) ");
423
label[12] = new String("PutField4Const4 instance method ");
424
label[13] = new String("Handle instance method ");
425
// Report headers
426
baos.reset();
427
try {
428
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
429
s = "Pattern";
430
for (int i=0; i<s.length(); i++)
431
ba[i]=(byte)s.charAt(i);
432
baos.write(ba,0,32);
433
}
434
catch (IndexOutOfBoundsException e){
435
}
436
try {
437
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
438
baos.write(ba,0,3);
439
s = "Errors";
440
for (int i=0; i<s.length(); i++)
441
ba[i]=(byte)s.charAt(i);
442
baos.write(ba,0,6);
443
}
444
catch (IndexOutOfBoundsException e){
445
}
446
try {
447
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
448
baos.write(ba,0,3);
449
s = "Iterations";
450
for (int i=0; i<s.length(); i++)
451
ba[i]=(byte)s.charAt(i);
452
baos.write(ba,0,10);
453
}
454
catch (IndexOutOfBoundsException e){
455
}
456
try {
457
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
458
baos.write(ba,0,3);
459
s = "State";
460
for (int i=0; i<s.length(); i++)
461
ba[i]=(byte)s.charAt(i);
462
baos.write(ba,0,5);
463
}
464
catch (IndexOutOfBoundsException e){
465
}
466
inline007.goldChecker.print(baos.toString());
467
inline007.goldChecker.println();
468
469
// Report header underlining
470
baos.reset();
471
try {
472
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
473
s = "Pattern";
474
for (int i=0; i<s.length(); i++)
475
ba[i]=(byte)'=';
476
baos.write(ba,0,32);
477
}
478
catch (IndexOutOfBoundsException e){
479
}
480
try {
481
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
482
baos.write(ba,0,3);
483
s = "Errors";
484
for (int i=0; i<s.length(); i++)
485
ba[i]=(byte)'=';
486
baos.write(ba,0,6);
487
}
488
catch (IndexOutOfBoundsException e){
489
}
490
try {
491
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
492
baos.write(ba,0,3);
493
s = "Iterations";
494
for (int i=0; i<s.length(); i++)
495
ba[i]=(byte)'=';
496
baos.write(ba,0,10);
497
}
498
catch (IndexOutOfBoundsException e){
499
}
500
try {
501
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
502
baos.write(ba,0,3);
503
s = "State";
504
for (int i=0; i<s.length(); i++)
505
ba[i]=(byte)'=';
506
baos.write(ba,0,5);
507
}
508
catch (IndexOutOfBoundsException e){
509
}
510
inline007.goldChecker.print(baos.toString());
511
inline007.goldChecker.println();
512
513
for (int icount=0; icount<14; icount++) {
514
if (myIters[icount] == ITERS && errFlag[icount] == 0)
515
state="PASS";
516
else {
517
ierr++;
518
state="FAIL";
519
}
520
baos.reset();
521
try {
522
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
523
for (int i=0; i<label[icount].length(); i++)
524
ba[i]=(byte)label[icount].charAt(i);
525
baos.write(ba,0,32);
526
}
527
catch (IndexOutOfBoundsException e){
528
inline007.goldChecker.println("0: "+e);
529
}
530
try {
531
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
532
baos.write(ba,0,3);
533
s = Integer.toString(errFlag[icount]);
534
for (int i=0; i<s.length(); i++)
535
ba[i]=(byte)s.charAt(i);
536
baos.write(ba,0,6);
537
}
538
catch (IndexOutOfBoundsException e){
539
inline007.goldChecker.println("1: "+e);
540
}
541
try {
542
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
543
baos.write(ba,0,3);
544
s = Integer.toString(myIters[icount]);
545
for (int i=0; i<s.length(); i++)
546
ba[i]=(byte)s.charAt(i);
547
baos.write(ba,0,10);
548
}
549
catch (IndexOutOfBoundsException e){
550
inline007.goldChecker.println("1: "+e);
551
}
552
try {
553
for (int i=0; i<ba.length; i++) ba[i]=(byte)' ';
554
baos.write(ba,0,3);
555
for (int i=0; i<state.length(); i++)
556
ba[i]=(byte)state.charAt(i);
557
baos.write(ba,0,5);
558
}
559
catch (IndexOutOfBoundsException e){
560
inline007.goldChecker.println("3: "+e);
561
}
562
inline007.goldChecker.print(baos.toString());
563
inline007.goldChecker.println();
564
}
565
return ierr;
566
}
567
568
public static void main( String args[] ) {
569
int ierr;
570
inline007 myInline_n = new inline007();
571
inline007 myInline_f = new inline007();
572
573
if (args.length > 0 && args[0].equals("-help")) {
574
inline007.goldChecker.println("usage: java inline007 [-print | -report]");
575
inline007.goldChecker.check();
576
return;
577
}
578
if (args.length > 0 && args[0].equals("-print"))
579
pFlag = 2;
580
if (args.length > 0 && args[0].equals("-report"))
581
pFlag = 1;
582
for (int ii=0; ii<14; ii++) myIters[ii]=ITERS;
583
if (pFlag==2) inline007.goldChecker.println("inline007");
584
585
/* Give the JIT an initial look at all the methods */
586
myInline_f.runFinals();
587
ierr = inline007.result();
588
if (ierr == 0) {
589
inline007.goldChecker.println("PASSED.");
590
}
591
else {
592
inline007.goldChecker.println("FAILED. (ierr = " + ierr + ")");
593
}
594
inline007.goldChecker.check();
595
}
596
}
597
598