Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/hotspot/jtreg/compiler/intrinsics/klass/TestIsPrimitive.java
41153 views
1
/*
2
* Copyright (c) 2016, 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 8150669
27
* @bug 8233019
28
* @summary C1 intrinsic for Class.isPrimitive
29
* @modules java.base/jdk.internal.misc
30
*
31
* @run main/othervm -ea -Diters=200 -Xint
32
* compiler.intrinsics.klass.TestIsPrimitive
33
* @run main/othervm -ea -XX:-UseSharedSpaces -Diters=30000 -XX:TieredStopAtLevel=1
34
* compiler.intrinsics.klass.TestIsPrimitive
35
* @run main/othervm -ea -Diters=30000 -XX:TieredStopAtLevel=4
36
* compiler.intrinsics.klass.TestIsPrimitive
37
*/
38
39
package compiler.intrinsics.klass;
40
41
import java.util.concurrent.Callable;
42
43
public class TestIsPrimitive {
44
static final int ITERS = Integer.getInteger("iters", 1);
45
46
public static void main(String... args) throws Exception {
47
testOK(true, InlineConstants::testBoolean);
48
testOK(true, InlineConstants::testByte);
49
testOK(true, InlineConstants::testShort);
50
testOK(true, InlineConstants::testChar);
51
testOK(true, InlineConstants::testInt);
52
testOK(true, InlineConstants::testFloat);
53
testOK(true, InlineConstants::testLong);
54
testOK(true, InlineConstants::testDouble);
55
testOK(false, InlineConstants::testObject);
56
testOK(false, InlineConstants::testArray);
57
testOK(false, InlineConstants::testBooleanArray);
58
59
testOK(true, StaticConstants::testBoolean);
60
testOK(true, StaticConstants::testByte);
61
testOK(true, StaticConstants::testShort);
62
testOK(true, StaticConstants::testChar);
63
testOK(true, StaticConstants::testInt);
64
testOK(true, StaticConstants::testFloat);
65
testOK(true, StaticConstants::testLong);
66
testOK(true, StaticConstants::testDouble);
67
testOK(false, StaticConstants::testObject);
68
testOK(false, StaticConstants::testArray);
69
testOK(false, StaticConstants::testBooleanArray);
70
testNPE( StaticConstants::testNull);
71
72
testOK(true, NoConstants::testBoolean);
73
testOK(true, NoConstants::testByte);
74
testOK(true, NoConstants::testShort);
75
testOK(true, NoConstants::testChar);
76
testOK(true, NoConstants::testInt);
77
testOK(true, NoConstants::testFloat);
78
testOK(true, NoConstants::testLong);
79
testOK(true, NoConstants::testDouble);
80
testOK(false, NoConstants::testObject);
81
testOK(false, NoConstants::testArray);
82
testOK(false, NoConstants::testBooleanArray);
83
testNPE( NoConstants::testNull);
84
}
85
86
public static void testOK(boolean expected, Callable<Object> test) throws Exception {
87
for (int c = 0; c < ITERS; c++) {
88
Object res = test.call();
89
if (!res.equals(expected)) {
90
throw new IllegalStateException("Wrong result: expected = " + expected + ", but got " + res);
91
}
92
}
93
}
94
95
static volatile Object sink;
96
97
public static void testNPE(Callable<Object> test) throws Exception {
98
for (int c = 0; c < ITERS; c++) {
99
try {
100
sink = test.call();
101
throw new IllegalStateException("Expected NPE");
102
} catch (NullPointerException iae) {
103
// expected
104
}
105
}
106
}
107
108
static volatile Class<?> classBoolean = boolean.class;
109
static volatile Class<?> classByte = byte.class;
110
static volatile Class<?> classShort = short.class;
111
static volatile Class<?> classChar = char.class;
112
static volatile Class<?> classInt = int.class;
113
static volatile Class<?> classFloat = float.class;
114
static volatile Class<?> classLong = long.class;
115
static volatile Class<?> classDouble = double.class;
116
static volatile Class<?> classObject = Object.class;
117
static volatile Class<?> classArray = Object[].class;
118
static volatile Class<?> classNull = null;
119
static volatile Class<?> classBooleanArray = boolean[].class;
120
121
static final Class<?> staticClassBoolean = boolean.class;
122
static final Class<?> staticClassByte = byte.class;
123
static final Class<?> staticClassShort = short.class;
124
static final Class<?> staticClassChar = char.class;
125
static final Class<?> staticClassInt = int.class;
126
static final Class<?> staticClassFloat = float.class;
127
static final Class<?> staticClassLong = long.class;
128
static final Class<?> staticClassDouble = double.class;
129
static final Class<?> staticClassObject = Object.class;
130
static final Class<?> staticClassArray = Object[].class;
131
static final Class<?> staticClassNull = null;
132
static final Class<?> staticClassBooleanArray = boolean[].class;
133
134
static class InlineConstants {
135
static boolean testBoolean() { return boolean.class.isPrimitive(); }
136
static boolean testByte() { return byte.class.isPrimitive(); }
137
static boolean testShort() { return short.class.isPrimitive(); }
138
static boolean testChar() { return char.class.isPrimitive(); }
139
static boolean testInt() { return int.class.isPrimitive(); }
140
static boolean testFloat() { return float.class.isPrimitive(); }
141
static boolean testLong() { return long.class.isPrimitive(); }
142
static boolean testDouble() { return double.class.isPrimitive(); }
143
static boolean testObject() { return Object.class.isPrimitive(); }
144
static boolean testArray() { return Object[].class.isPrimitive(); }
145
static boolean testBooleanArray() { return boolean[].class.isPrimitive(); }
146
}
147
148
static class StaticConstants {
149
static boolean testBoolean() { return staticClassBoolean.isPrimitive(); }
150
static boolean testByte() { return staticClassByte.isPrimitive(); }
151
static boolean testShort() { return staticClassShort.isPrimitive(); }
152
static boolean testChar() { return staticClassChar.isPrimitive(); }
153
static boolean testInt() { return staticClassInt.isPrimitive(); }
154
static boolean testFloat() { return staticClassFloat.isPrimitive(); }
155
static boolean testLong() { return staticClassLong.isPrimitive(); }
156
static boolean testDouble() { return staticClassDouble.isPrimitive(); }
157
static boolean testObject() { return staticClassObject.isPrimitive(); }
158
static boolean testArray() { return staticClassArray.isPrimitive(); }
159
static boolean testNull() { return staticClassNull.isPrimitive(); }
160
static boolean testBooleanArray() { return staticClassBooleanArray.isPrimitive(); }
161
}
162
163
static class NoConstants {
164
static boolean testBoolean() { return classBoolean.isPrimitive(); }
165
static boolean testByte() { return classByte.isPrimitive(); }
166
static boolean testShort() { return classShort.isPrimitive(); }
167
static boolean testChar() { return classChar.isPrimitive(); }
168
static boolean testInt() { return classInt.isPrimitive(); }
169
static boolean testFloat() { return classFloat.isPrimitive(); }
170
static boolean testLong() { return classLong.isPrimitive(); }
171
static boolean testDouble() { return classDouble.isPrimitive(); }
172
static boolean testObject() { return classObject.isPrimitive(); }
173
static boolean testArray() { return classArray.isPrimitive(); }
174
static boolean testNull() { return classNull.isPrimitive(); }
175
static boolean testBooleanArray() { return classBooleanArray.isPrimitive(); }
176
}
177
178
179
}
180
181
182