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 voidInitialize this data flow node to compute the new solution This is done before iteratively calling the MEET operator.abstract voidApply transfer function to the instructionvoidBuilds the data-flow variables (or facts) for a particular node.abstract voidBuilds the data-flow variables (or facts) for a particular instruction.abstract voidcompute_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.voidcomputeDataFlowInfo(List<U> workList, BitSet bbSet) voidcomputeDataFlowInfoBackward(List<U> workList, BitSet bbSet) voidcomputeDataFlowInfoForward(List<U> workList, BitSet bbSet) voidAny required cleanup of state after applying transfer functiongetBB()getCFG()Get the control flow graphbooleanvoidinit()Initialize this data flow node for solving the current problem This is done after building dataflow variables for the problem.voidAny setting up of state/initialization before applying transfer functionabstract booleanDid 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
-