src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotClassSubstitutions.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotClassSubstitutions.java Mon Mar 20 17:38:55 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotClassSubstitutions.java Mon Mar 20 17:38:54 2017
*** 37,46 ****
--- 37,47 ----
import org.graalvm.compiler.api.replacements.ClassSubstitution;
import org.graalvm.compiler.api.replacements.MethodSubstitution;
import org.graalvm.compiler.hotspot.word.KlassPointer;
import org.graalvm.compiler.nodes.PiNode;
+ import org.graalvm.compiler.nodes.SnippetAnchorNode;
// JaCoCo Exclude
/**
* Substitutions for {@link java.lang.Class} methods.
*** 76,86 ****
--- 77,88 ----
KlassPointer klass = ClassGetHubNode.readClass(thisObj);
if (klass.isNull()) {
// Class for primitive type
return false;
} else {
! return klassIsArray(klass);
! KlassPointer klassNonNull = ClassGetHubNode.piCastNonNull(klass, SnippetAnchorNode.anchor());
+ return klassIsArray(klassNonNull);
}
}
@MethodSubstitution(isStatic = false)
public static boolean isPrimitive(final Class<?> thisObj) {
*** 90,128 ****
--- 92,129 ----
@MethodSubstitution(isStatic = false)
public static Class<?> getSuperclass(final Class<?> thisObj) {
KlassPointer klass = ClassGetHubNode.readClass(thisObj);
if (!klass.isNull()) {
! int accessFlags = klass.readInt(klassAccessFlagsOffset(INJECTED_VMCONFIG), KLASS_ACCESS_FLAGS_LOCATION);
! KlassPointer klassNonNull = ClassGetHubNode.piCastNonNull(klass, SnippetAnchorNode.anchor());
+ int accessFlags = klassNonNull.readInt(klassAccessFlagsOffset(INJECTED_VMCONFIG), KLASS_ACCESS_FLAGS_LOCATION);
if ((accessFlags & Modifier.INTERFACE) == 0) {
! if (klassIsArray(klassNonNull)) {
return Object.class;
} else {
! KlassPointer superKlass = klassNonNull.readKlassPointer(klassSuperKlassOffset(INJECTED_VMCONFIG), KLASS_SUPER_KLASS_LOCATION);
if (superKlass.isNull()) {
return null;
} else {
! return readJavaMirror(superKlass);
! KlassPointer superKlassNonNull = ClassGetHubNode.piCastNonNull(superKlass, SnippetAnchorNode.anchor());
+ return HubGetClassNode.readClass(superKlassNonNull);
}
}
}
} else {
// Class for primitive type
}
return null;
}
public static Class<?> readJavaMirror(KlassPointer klass) {
return PiNode.asNonNullClass(HubGetClassNode.readClass(klass));
}
@MethodSubstitution(isStatic = false)
public static Class<?> getComponentType(final Class<?> thisObj) {
KlassPointer klass = ClassGetHubNode.readClass(thisObj);
if (!klass.isNull()) {
if (klassIsArray(klass)) {
return PiNode.asNonNullClass(klass.readObject(arrayKlassComponentMirrorOffset(INJECTED_VMCONFIG), ARRAY_KLASS_COMPONENT_MIRROR));
+ KlassPointer klassNonNull = ClassGetHubNode.piCastNonNull(klass, SnippetAnchorNode.anchor());
+ if (klassIsArray(klassNonNull)) {
+ return PiNode.asNonNullClass(klassNonNull.readObject(arrayKlassComponentMirrorOffset(INJECTED_VMCONFIG), ARRAY_KLASS_COMPONENT_MIRROR));
}
} else {
// Class for primitive type
}
return null;
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotClassSubstitutions.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File