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