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