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