src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil.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/HotSpotReplacementsUtil.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/HotSpotReplacementsUtil.java	Mon Mar 20 17:38:55 2017

*** 40,60 **** --- 40,58 ---- import org.graalvm.compiler.graph.Node.NodeIntrinsic; import org.graalvm.compiler.graph.spi.CanonicalizerTool; import org.graalvm.compiler.hotspot.GraalHotSpotVMConfig; import org.graalvm.compiler.hotspot.nodes.CompressionNode; import org.graalvm.compiler.hotspot.nodes.ComputeObjectAddressNode; import org.graalvm.compiler.hotspot.nodes.SnippetAnchorNode; import org.graalvm.compiler.hotspot.word.KlassPointer; import org.graalvm.compiler.nodes.CanonicalizableLocation; import org.graalvm.compiler.nodes.ConstantNode; import org.graalvm.compiler.nodes.NamedLocationIdentity; import org.graalvm.compiler.nodes.ValueNode; import org.graalvm.compiler.nodes.extended.ForeignCallNode; import org.graalvm.compiler.nodes.extended.GuardingNode; import org.graalvm.compiler.nodes.extended.LoadHubNode; import org.graalvm.compiler.nodes.extended.StoreHubNode; ! import org.graalvm.compiler.nodes.extended.UnsafeLoadNode; ! import org.graalvm.compiler.nodes.extended.RawLoadNode; import org.graalvm.compiler.nodes.memory.Access; import org.graalvm.compiler.nodes.memory.address.AddressNode; import org.graalvm.compiler.nodes.memory.address.OffsetAddressNode; import org.graalvm.compiler.nodes.type.StampTool; import org.graalvm.compiler.replacements.ReplacementsUtil;
*** 387,422 **** --- 385,411 ---- @Fold public static int klassLayoutHelperOffset(@InjectedParameter GraalHotSpotVMConfig config) { return config.klassLayoutHelperOffset; } public static int readLayoutHelper(KlassPointer hub) { // return hub.readInt(klassLayoutHelperOffset(), KLASS_LAYOUT_HELPER_LOCATION); GuardingNode anchorNode = SnippetAnchorNode.anchor(); return loadKlassLayoutHelperIntrinsic(hub, anchorNode); } @NodeIntrinsic(value = KlassLayoutHelperNode.class) public static native int loadKlassLayoutHelperIntrinsic(KlassPointer object, GuardingNode anchor); @NodeIntrinsic(value = KlassLayoutHelperNode.class) ! public static native int loadKlassLayoutHelperIntrinsic(KlassPointer object); ! public static native int readLayoutHelper(KlassPointer object); /** * Checks if class {@code klass} is an array. * * See: Klass::layout_helper_is_array * ! * @param klassNonNull the class to be checked ! * @return true if klassNonNull is an array, false otherwise */ ! public static boolean klassIsArray(KlassPointer klassNonNull) { /* * The less-than check only works if both values are ints. We use local variables to make * sure these are still ints and haven't changed. */ ! final int layoutHelper = readLayoutHelper(klassNonNull); final int layoutHelperNeutralValue = config(INJECTED_VMCONFIG).klassLayoutHelperNeutralValue; return (layoutHelper < layoutHelperNeutralValue); } public static final LocationIdentity ARRAY_KLASS_COMPONENT_MIRROR = NamedLocationIdentity.immutable("ArrayKlass::_component_mirror");
*** 477,486 **** --- 466,500 ---- @Fold public static int unlockedMask(@InjectedParameter GraalHotSpotVMConfig config) { return config.unlockedMask; } + @Fold + public static int monitorMask(@InjectedParameter GraalHotSpotVMConfig config) { + return config.monitorMask; + } + + @Fold + public static int objectMonitorOwnerOffset(@InjectedParameter GraalHotSpotVMConfig config) { + return config.objectMonitorOwner; + } + + @Fold + public static int objectMonitorRecursionsOffset(@InjectedParameter GraalHotSpotVMConfig config) { + return config.objectMonitorRecursions; + } + + @Fold + public static int objectMonitorCxqOffset(@InjectedParameter GraalHotSpotVMConfig config) { + return config.objectMonitorCxq; + } + + @Fold + public static int objectMonitorEntryListOffset(@InjectedParameter GraalHotSpotVMConfig config) { + return config.objectMonitorEntryList; + } + /** * Mask for a biasable, locked or unlocked mark word. * * <pre> * +----------------------------------+-+-+
*** 624,633 **** --- 638,655 ---- return config.secondarySupersOffset; } public static final LocationIdentity DISPLACED_MARK_WORD_LOCATION = NamedLocationIdentity.mutable("DisplacedMarkWord"); + public static final LocationIdentity OBJECT_MONITOR_OWNER_LOCATION = NamedLocationIdentity.mutable("ObjectMonitor::_owner"); + + public static final LocationIdentity OBJECT_MONITOR_RECURSION_LOCATION = NamedLocationIdentity.mutable("ObjectMonitor::_recursions"); + + public static final LocationIdentity OBJECT_MONITOR_CXQ_LOCATION = NamedLocationIdentity.mutable("ObjectMonitor::_cxq"); + + public static final LocationIdentity OBJECT_MONITOR_ENTRY_LIST_LOCATION = NamedLocationIdentity.mutable("ObjectMonitor::_EntryList"); + @Fold public static int lockDisplacedMarkOffset(@InjectedParameter GraalHotSpotVMConfig config) { return config.basicLockDisplacedHeaderOffset; }
*** 707,720 **** --- 729,742 ---- public static native Word registerAsWord(@ConstantNodeParameter Register register, @ConstantNodeParameter boolean directUse, @ConstantNodeParameter boolean incoming); @NodeIntrinsic(value = WriteRegisterNode.class, setStampFromReturnType = true) public static native void writeRegisterAsWord(@ConstantNodeParameter Register register, Word value); ! @NodeIntrinsic(value = UnsafeLoadNode.class, setStampFromReturnType = true) ! @NodeIntrinsic(value = RawLoadNode.class, setStampFromReturnType = true) private static native Word loadWordFromObjectIntrinsic(Object object, long offset, @ConstantNodeParameter JavaKind wordKind, @ConstantNodeParameter LocationIdentity locationIdentity); ! @NodeIntrinsic(value = UnsafeLoadNode.class, setStampFromReturnType = true) ! @NodeIntrinsic(value = RawLoadNode.class, setStampFromReturnType = true) private static native KlassPointer loadKlassFromObjectIntrinsic(Object object, long offset, @ConstantNodeParameter JavaKind wordKind, @ConstantNodeParameter LocationIdentity locationIdentity); @NodeIntrinsic(value = LoadHubNode.class) public static native KlassPointer loadHubIntrinsic(Object object);

src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil.java
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File