public class SnippetFrameStateAssignment extends Object
GraphUtil.mayRemoveSplit(org.graalvm.compiler.nodes.IfNode)
for
more details. The same applies for loop exit nodes.
This utility determines which frame state can be assigned to each node in a snippet graph.
During lowering a node is replaced with the snippet which means there are only 2 possible states
that can be used inside the snippet graph: the before frame state of the snippet lowered node and
the after state. Generally, if a side-effect is happening inside a snippet all code after that
particular side-effect must not deopt to the before state but only to the after state. All code
before the side-effect is allowed to use the before stateModifier and Type | Class and Description |
---|---|
static class |
SnippetFrameStateAssignment.NodeStateAssignment
Possible states to be used inside a snippet.
|
static class |
SnippetFrameStateAssignment.SnippetFrameStateAssignmentClosure
The iterator below visits a compiler graph in reverse post order and, based on the
side-effecting nodes, decides which state can be used after snippet lowering for a merge or
loop exit node.
|
Constructor and Description |
---|
SnippetFrameStateAssignment() |