Skip to content

Commit cd3e352

Browse files
committed
Adapt JDK-8346567: Make Class.getModifiers() non-native
1 parent e0ba5cb commit cd3e352

File tree

2 files changed

+15
-13
lines changed

2 files changed

+15
-13
lines changed

compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/GraalHotSpotVMConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ public final int logMinObjAlignment() {
243243
public final int classMirrorOffset = getFieldOffset("Klass::_java_mirror", Integer.class, "OopHandle");
244244

245245
public final int klassSuperKlassOffset = getFieldOffset("Klass::_super", Integer.class, "Klass*");
246-
public final int klassModifierFlagsOffset = getFieldOffset("Klass::_modifier_flags", Integer.class, JDK == 21 ? "jint" : "u2");
246+
public final int klassModifierFlagsOffset = getFieldOffset("Klass::_modifier_flags", Integer.class, "jint", -1, JDK == 21);
247247
public final int klassAccessFlagsOffset = getFieldOffset("Klass::_access_flags", Integer.class, "AccessFlags");
248248
public final int klassMiscFlagsOffset = getFieldOffset("Klass::_misc_flags._flags", Integer.class, "u1", 0, JDK >= 24);
249249
public final int klassLayoutHelperOffset = getFieldOffset("Klass::_layout_helper", Integer.class, "jint");

compiler/src/jdk.graal.compiler/src/jdk/graal/compiler/hotspot/meta/HotSpotGraphBuilderPlugins.java

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -370,19 +370,21 @@ public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Rec
370370
private static void registerClassPlugins(Plugins plugins, GraalHotSpotVMConfig config, Replacements replacements) {
371371
Registration r = new Registration(plugins.getInvocationPlugins(), Class.class, replacements);
372372

373-
r.register(new InvocationPlugin("getModifiers", Receiver.class) {
374-
@Override
375-
public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) {
376-
try (HotSpotInvocationPluginHelper helper = new HotSpotInvocationPluginHelper(b, targetMethod, config)) {
377-
ValueNode klass = helper.readKlassFromClass(receiver.get(true));
378-
// Primitive Class case
379-
ValueNode nonNullKlass = helper.emitNullReturnGuard(klass, ConstantNode.forInt(Modifier.ABSTRACT | Modifier.FINAL | Modifier.PUBLIC), GraalDirectives.UNLIKELY_PROBABILITY);
380-
// other return Klass::_modifier_flags
381-
helper.emitFinalReturn(JavaKind.Int, helper.readKlassModifierFlags(nonNullKlass));
373+
if (JavaVersionUtil.JAVA_SPEC == 21) {
374+
r.register(new InvocationPlugin("getModifiers", Receiver.class) {
375+
@Override
376+
public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) {
377+
try (HotSpotInvocationPluginHelper helper = new HotSpotInvocationPluginHelper(b, targetMethod, config)) {
378+
ValueNode klass = helper.readKlassFromClass(receiver.get(true));
379+
// Primitive Class case
380+
ValueNode nonNullKlass = helper.emitNullReturnGuard(klass, ConstantNode.forInt(Modifier.ABSTRACT | Modifier.FINAL | Modifier.PUBLIC), GraalDirectives.UNLIKELY_PROBABILITY);
381+
// other return Klass::_modifier_flags
382+
helper.emitFinalReturn(JavaKind.Int, helper.readKlassModifierFlags(nonNullKlass));
383+
}
384+
return true;
382385
}
383-
return true;
384-
}
385-
});
386+
});
387+
}
386388
r.register(new InvocationPlugin("isInterface", Receiver.class) {
387389
@Override
388390
public boolean apply(GraphBuilderContext b, ResolvedJavaMethod targetMethod, Receiver receiver) {

0 commit comments

Comments
 (0)