Assertion nodes will go away as soon as the value evaluates to true. Compile-time assertions will
fail if this has not happened by the time the node is lowered to LIR, while runtime assertions
may need to insert a check.
Nested Class Summary
Nested classes/interfaces inherited from class com.oracle.graal.graph.Node
Implementations of this method can provide local optimizations like constant folding and
strength reduction. Implementations should look at the properties and inputs of the current
node and determine if there is a more optimal and always semantically correct replacement.
The return value determines the effect that the canonicalization will have:
Returning an pre-existing node will replace the current node with the given one.
Returning a newly created node (that was not yet added to the graph) will replace the
current node with the given one, after adding it to the graph. If both the replacement and
the replacee are anchored in control flow (fixed nodes), the replacement will be added to the
control flow. It is invalid to replace a non-fixed node with a newly created fixed node
(because its placement in the control flow cannot be determined without scheduling).
Returning null will delete the current node and replace it with null at
all usages. Note that it is not necessary to delete floating nodes that have no more usages
this way - they will be deleted automatically.