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 |
nextNODE_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, setNextasConstant, asJavaConstant, getKind, graph, inferStamp, isAllowedUsageType, isConstant, isConstantPredicate, isNullConstant, setStamp, stamp, updateStampacceptInputs, 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, verifyInputspublic 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 LIRLowerableDefaultJavaLoweringProvider.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)