< prev index next >
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/replacements/HotSpotReplacementsUtil.java
Print this page
rev 56282 : [mq]: graal
*** 49,58 ****
--- 49,59 ----
import org.graalvm.compiler.nodes.NamedLocationIdentity;
import org.graalvm.compiler.nodes.NodeView;
import org.graalvm.compiler.nodes.ValueNode;
import org.graalvm.compiler.nodes.extended.ForeignCallNode;
import org.graalvm.compiler.nodes.extended.LoadHubNode;
+ import org.graalvm.compiler.nodes.extended.LoadHubOrNullNode;
import org.graalvm.compiler.nodes.extended.RawLoadNode;
import org.graalvm.compiler.nodes.extended.StoreHubNode;
import org.graalvm.compiler.nodes.graphbuilderconf.IntrinsicContext;
import org.graalvm.compiler.nodes.memory.Access;
import org.graalvm.compiler.nodes.memory.address.AddressNode;
*** 775,807 ****
private static native KlassPointer loadKlassFromObjectIntrinsic(Object object, long offset, @ConstantNodeParameter LocationIdentity locationIdentity, @ConstantNodeParameter JavaKind wordKind);
@NodeIntrinsic(value = LoadHubNode.class)
public static native KlassPointer loadHubIntrinsic(Object object);
! public static final LocationIdentity CLASS_STATE_LOCATION = NamedLocationIdentity.mutable("ClassState");
@Fold
! public static int instanceKlassInitStateOffset(@InjectedParameter GraalHotSpotVMConfig config) {
return config.instanceKlassInitStateOffset;
}
@Fold
public static int instanceKlassStateFullyInitialized(@InjectedParameter GraalHotSpotVMConfig config) {
return config.instanceKlassStateFullyInitialized;
}
/**
*
* @param hub the hub of an InstanceKlass
* @return true is the InstanceKlass represented by hub is fully initialized
*/
public static boolean isInstanceKlassFullyInitialized(KlassPointer hub) {
! return readInstanceKlassState(hub) == instanceKlassStateFullyInitialized(INJECTED_VMCONFIG);
}
! private static byte readInstanceKlassState(KlassPointer hub) {
! return hub.readByte(instanceKlassInitStateOffset(INJECTED_VMCONFIG), CLASS_STATE_LOCATION);
}
public static final LocationIdentity KLASS_MODIFIER_FLAGS_LOCATION = NamedLocationIdentity.immutable("Klass::_modifier_flags");
@Fold
--- 776,829 ----
private static native KlassPointer loadKlassFromObjectIntrinsic(Object object, long offset, @ConstantNodeParameter LocationIdentity locationIdentity, @ConstantNodeParameter JavaKind wordKind);
@NodeIntrinsic(value = LoadHubNode.class)
public static native KlassPointer loadHubIntrinsic(Object object);
! @NodeIntrinsic(value = LoadHubOrNullNode.class)
! public static native KlassPointer loadHubOrNullIntrinsic(Object object);
!
! static final LocationIdentity CLASS_INIT_STATE_LOCATION = NamedLocationIdentity.mutable("ClassInitState");
!
! static final LocationIdentity CLASS_INIT_THREAD_LOCATION = NamedLocationIdentity.mutable("ClassInitThread");
@Fold
! static int instanceKlassInitStateOffset(@InjectedParameter GraalHotSpotVMConfig config) {
return config.instanceKlassInitStateOffset;
}
@Fold
+ static int instanceKlassInitThreadOffset(@InjectedParameter GraalHotSpotVMConfig config) {
+ assert config.instanceKlassInitThreadOffset != -1;
+ return config.instanceKlassInitThreadOffset;
+ }
+
+ @Fold
public static int instanceKlassStateFullyInitialized(@InjectedParameter GraalHotSpotVMConfig config) {
return config.instanceKlassStateFullyInitialized;
}
+ @Fold
+ public static int instanceKlassStateBeingInitialized(@InjectedParameter GraalHotSpotVMConfig config) {
+ assert config.instanceKlassStateBeingInitialized != -1;
+ return config.instanceKlassStateBeingInitialized;
+ }
+
/**
*
* @param hub the hub of an InstanceKlass
* @return true is the InstanceKlass represented by hub is fully initialized
*/
public static boolean isInstanceKlassFullyInitialized(KlassPointer hub) {
! return readInstanceKlassInitState(hub) == instanceKlassStateFullyInitialized(INJECTED_VMCONFIG);
! }
!
! static byte readInstanceKlassInitState(KlassPointer hub) {
! return hub.readByte(instanceKlassInitStateOffset(INJECTED_VMCONFIG), CLASS_INIT_STATE_LOCATION);
}
! static Word readInstanceKlassInitThread(KlassPointer hub) {
! return hub.readWord(instanceKlassInitThreadOffset(INJECTED_VMCONFIG), CLASS_INIT_THREAD_LOCATION);
}
public static final LocationIdentity KLASS_MODIFIER_FLAGS_LOCATION = NamedLocationIdentity.immutable("Klass::_modifier_flags");
@Fold
< prev index next >