Top Fields Constructors Methods
org.jruby.ir.dataflow

public abstract Class FlowGraphNode<T extends DataFlowProblem<T, U>, U extends FlowGraphNode<T, U>>

extends Object
Class Inheritance
Known Direct Subclasses
org.jruby.ir.dataflow.analyses.DefinedVariableNode, org.jruby.ir.dataflow.analyses.LiveVariableNode, org.jruby.ir.dataflow.analyses.LoadLocalVarPlacementNode, org.jruby.ir.dataflow.analyses.StoreLocalVarPlacementNode, org.jruby.ir.dataflow.analyses.UnboxableOpsAnalysisNode
Imports
org.jruby.dirgra.Edge, org.jruby.ir.instructions.Instr, org.jruby.ir.representations.BasicBlock, .CFG, java.util.BitSet, .List, .ListIterator

Field Summary

Modifier and TypeField and Description
protected final BasicBlock
protected final T
private final BasicBlock

Constructor Summary

AccessConstructor and Description
public
FlowGraphNode(T problem, BasicBlock basicBlock)

Method Summary

Modifier and TypeMethod and Description
public abstract void
applyPreMeetHandler()

Initialize this data flow node to compute the new solution This is done before iteratively calling the MEET operator.

public abstract void
applyTransferFunction(Instr i)

Apply transfer function to the instruction

public abstract void
buildDataFlowVars(Instr i)

Builds the data-flow variables (or facts) for a particular instruction.

public void
buildDataFlowVars()

Builds the data-flow variables (or facts) for a particular node.

public abstract void
compute_MEET(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!

public void
computeDataFlowInfo(List<U> workList, BitSet bbSet)

public void
public void
public void
finalizeSolution()

Any required cleanup of state after applying transfer function

public BasicBlock
public CFG
getCFG()

Get the control flow graph

public U
public boolean
public void
init()

Initialize this data flow node for solving the current problem This is done after building dataflow variables for the problem.

public void
initSolution()

Any setting up of state/initialization before applying transfer function

private void
processDestBB(List<U> workList, BitSet bbSet, BasicBlock d)

public abstract boolean
solutionChanged()

Did dataflow solution for this node change from last time?

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

basicBlockback to summary
protected final BasicBlock basicBlock
problemback to summary
protected final T problem
rescuerback to summary
private final BasicBlock rescuer

Constructor Detail

FlowGraphNodeback to summary
public FlowGraphNode(T problem, BasicBlock basicBlock)

Method Detail

applyPreMeetHandlerback to summary
public abstract void applyPreMeetHandler()

Initialize this data flow node to compute the new solution This is done before iteratively calling the MEET operator.

applyTransferFunctionback to summary
public abstract void applyTransferFunction(Instr i)

Apply transfer function to the instruction

buildDataFlowVarsback to summary
public abstract void buildDataFlowVars(Instr i)

Builds the data-flow variables (or facts) for a particular instruction.

buildDataFlowVarsback to summary
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!

compute_MEETback to summary
public abstract void compute_MEET(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.

computeDataFlowInfoback to summary
public void computeDataFlowInfo(List<U> workList, BitSet bbSet)
computeDataFlowInfoBackwardback to summary
public void computeDataFlowInfoBackward(List<U> workList, BitSet bbSet)
computeDataFlowInfoForwardback to summary
public void computeDataFlowInfoForward(List<U> workList, BitSet bbSet)
finalizeSolutionback to summary
public void finalizeSolution()

Any required cleanup of state after applying transfer function

getBBback to summary
public BasicBlock getBB()
getCFGback to summary
public CFG getCFG()

Get the control flow graph

getExceptionTargetNodeback to summary
public U getExceptionTargetNode()
hasExceptionsRescuedback to summary
public boolean hasExceptionsRescued()
initback to summary
public void init()

Initialize this data flow node for solving the current problem This is done after building dataflow variables for the problem.

initSolutionback to summary
public void initSolution()

Any setting up of state/initialization before applying transfer function

processDestBBback to summary
private void processDestBB(List<U> workList, BitSet bbSet, BasicBlock d)
solutionChangedback to summary
public abstract boolean solutionChanged()

Did dataflow solution for this node change from last time?