public final class DirectReadNode extends FixedWithNextNode implements LIRLowerable
UnsafeStoreNode
in that it is not a
StateSplit
and takes a computed address instead of an object.Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Modifier and Type | Field and Description |
---|---|
protected ValueNode |
address |
protected Kind |
readKind |
static NodeClass<DirectReadNode> |
TYPE |
next
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
DirectReadNode(ValueNode address,
Kind readKind) |
Modifier and Type | Method and Description |
---|---|
void |
generate(NodeLIRBuilderTool gen)
If we are sub int sizes, we try to sign/zero extend the value to at least int as it is done
in the
DefaultJavaLoweringProvider.implicitLoadConvert(com.oracle.graal.nodes.StructuredGraph, jdk.internal.jvmci.meta.Kind, com.oracle.graal.nodes.ValueNode)
and DefaultJavaLoweringProvider.createUnsafeRead(com.oracle.graal.nodes.StructuredGraph, com.oracle.graal.nodes.extended.UnsafeLoadNode, com.oracle.graal.nodes.extended.GuardingNode) . |
protected ValueNode |
getAddress() |
asNode, next, setNext
asConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStamp
acceptInputs, acceptSuccessors, afterClone, assertFalse, assertTrue, cfgPredecessors, cfgSuccessors, clearInputs, clearSuccessors, copyWithInputs, copyWithInputs, equals, fail, formatTo, getDebugProperties, getDebugProperties, getId, getNodeClass, getUsageAt, getUsageCount, hashCode, hasNoUsages, hasUsages, inputs, isAlive, isDeleted, markDeleted, modCount, newIdentityMap, newIdentityMap, newIdentityMap, newMap, newMap, newMap, newSet, newSet, predecessor, pushInputs, removeUsage, replaceAndDelete, replaceAtMatchingUsages, replaceAtPredecessor, replaceAtUsages, replaceAtUsages, replaceAtUsages, replaceFirstInput, replaceFirstSuccessor, safeDelete, simplify, successors, toString, toString, updatePredecessor, updateUsages, updateUsagesInterface, usages, valueEquals, verifyEdges, verifyInputs
public static final NodeClass<DirectReadNode> TYPE
public DirectReadNode(ValueNode address, Kind readKind)
protected ValueNode getAddress()
public void generate(NodeLIRBuilderTool gen)
DefaultJavaLoweringProvider.implicitLoadConvert(com.oracle.graal.nodes.StructuredGraph, jdk.internal.jvmci.meta.Kind, com.oracle.graal.nodes.ValueNode)
and DefaultJavaLoweringProvider.createUnsafeRead(com.oracle.graal.nodes.StructuredGraph, com.oracle.graal.nodes.extended.UnsafeLoadNode, com.oracle.graal.nodes.extended.GuardingNode)
.generate
in interface LIRLowerable
DefaultJavaLoweringProvider.implicitLoadConvert(com.oracle.graal.nodes.StructuredGraph, jdk.internal.jvmci.meta.Kind, com.oracle.graal.nodes.ValueNode)
,
DefaultJavaLoweringProvider.createUnsafeRead(com.oracle.graal.nodes.StructuredGraph, com.oracle.graal.nodes.extended.UnsafeLoadNode, com.oracle.graal.nodes.extended.GuardingNode)