public final class ReinterpretNode extends UnaryNode implements ArithmeticLIRLowerable
ReinterpretNode
class represents a reinterpreting conversion that changes the stamp
of a primitive value to some other incompatible stamp. The new stamp must have the same width as
the old stamp.Node.ConstantNodeParameter, Node.InjectedNodeParameter, Node.Input, Node.NodeIntrinsic, Node.OptionalInput, Node.Successor, Node.ValueNumberable
Canonicalizable.Binary<T extends Node>, Canonicalizable.BinaryCommutative<T extends Node>, Canonicalizable.Unary<T extends Node>
Modifier and Type | Field and Description |
---|---|
static NodeClass<ReinterpretNode> |
TYPE |
NODE_LIST, NOT_ITERABLE, USE_UNSAFE_TO_CLONE, WithAllEdges, WithNoEdges, WithOnlyInputEdges, WithOnlySucessorEdges
Constructor and Description |
---|
ReinterpretNode(Kind to,
ValueNode value) |
ReinterpretNode(Stamp to,
ValueNode value) |
Modifier and Type | Method and Description |
---|---|
ValueNode |
canonical(CanonicalizerTool tool,
ValueNode forValue)
Similar to
Canonicalizable.canonical(CanonicalizerTool) , except that
implementations should act as if the current input of the node was the given one, i.e.,
they should never look at the inputs via the this pointer. |
private SerializableConstant |
evalConst(SerializableConstant c) |
void |
generate(NodeValueMap nodeValueMap,
ArithmeticLIRGenerator gen) |
static long |
reinterpret(Kind kind,
double value) |
static int |
reinterpret(Kind kind,
float value) |
static float |
reinterpret(Kind kind,
int value) |
static double |
reinterpret(Kind kind,
long value) |
static ValueNode |
reinterpret(Kind toKind,
ValueNode value) |
asNode
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, verify, verifyEdges, verifyInputs
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
canonical
public static final NodeClass<ReinterpretNode> TYPE
public ReinterpretNode(Kind to, ValueNode value)
public ReinterpretNode(Stamp to, ValueNode value)
private SerializableConstant evalConst(SerializableConstant c)
public ValueNode canonical(CanonicalizerTool tool, ValueNode forValue)
Canonicalizable.Unary
Canonicalizable.canonical(CanonicalizerTool)
, except that
implementations should act as if the current input of the node was the given one, i.e.,
they should never look at the inputs via the this pointer.canonical
in interface Canonicalizable.Unary<ValueNode>
public void generate(NodeValueMap nodeValueMap, ArithmeticLIRGenerator gen)
generate
in interface ArithmeticLIRLowerable
public static ValueNode reinterpret(Kind toKind, ValueNode value)
public static float reinterpret(Kind kind, int value)
public static int reinterpret(Kind kind, float value)
public static double reinterpret(Kind kind, long value)
public static long reinterpret(Kind kind, double value)