Package org.jruby.ir.dataflow
Class FlowGraphNode<T extends DataFlowProblem<T,U>,U extends FlowGraphNode<T,U>>
java.lang.Object
org.jruby.ir.dataflow.FlowGraphNode<T,U>
- Direct Known Subclasses:
DefinedVariableNode
,LiveVariableNode
,LoadLocalVarPlacementNode
,StoreLocalVarPlacementNode
,UnboxableOpsAnalysisNode
public abstract class FlowGraphNode<T extends DataFlowProblem<T,U>,U extends FlowGraphNode<T,U>>
extends Object
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract void
Initialize this data flow node to compute the new solution This is done before iteratively calling the MEET operator.abstract void
Apply transfer function to the instructionvoid
Builds the data-flow variables (or facts) for a particular node.abstract void
Builds the data-flow variables (or facts) for a particular instruction.abstract void
compute_MEET
(org.jruby.dirgra.Edge<BasicBlock, CFG.EdgeType> e, U pred) "MEET" current solution of "IN/OUT" with "OUT/IN(pred)", where "pred" is a predecessor of the current node! The choice of "IN/OUT" is determined by the direction of data flow.void
computeDataFlowInfo
(List<U> workList, BitSet bbSet) void
computeDataFlowInfoBackward
(List<U> workList, BitSet bbSet) void
computeDataFlowInfoForward
(List<U> workList, BitSet bbSet) void
Any required cleanup of state after applying transfer functiongetBB()
getCFG()
Get the control flow graphboolean
void
init()
Initialize this data flow node for solving the current problem This is done after building dataflow variables for the problem.void
Any setting up of state/initialization before applying transfer functionabstract boolean
Did dataflow solution for this node change from last time?
-
Field Details
-
problem
-
basicBlock
-
-
Constructor Details
-
FlowGraphNode
-
-
Method Details
-
buildDataFlowVars
Builds the data-flow variables (or facts) for a particular instruction. -
init
public void init()Initialize this data flow node for solving the current problem This is done after building dataflow variables for the problem. -
applyPreMeetHandler
public abstract void applyPreMeetHandler()Initialize this data flow node to compute the new solution This is done before iteratively calling the MEET operator. -
compute_MEET
"MEET" current solution of "IN/OUT" with "OUT/IN(pred)", where "pred" is a predecessor of the current node! The choice of "IN/OUT" is determined by the direction of data flow. -
initSolution
public void initSolution()Any setting up of state/initialization before applying transfer function -
applyTransferFunction
Apply transfer function to the instruction -
solutionChanged
public abstract boolean solutionChanged()Did dataflow solution for this node change from last time? -
finalizeSolution
public void finalizeSolution()Any required cleanup of state after applying transfer function -
getBB
-
getCFG
Get the control flow graph -
buildDataFlowVars
public void buildDataFlowVars()Builds the data-flow variables (or facts) for a particular node. Need only create the DF_Var for them to be added to the problem. Goes over the instructions in this basic block and collect all relevant LOCAL data flow vars for this problem! -
computeDataFlowInfo
-
computeDataFlowInfoBackward
-
computeDataFlowInfoForward
-
hasExceptionsRescued
public boolean hasExceptionsRescued() -
getExceptionTargetNode
-