public abstract class FlowGraphNode<T extends DataFlowProblem<T,U>,U extends FlowGraphNode<T,U>> extends Object
Modifier and Type | Field and Description |
---|---|
protected BasicBlock |
basicBlock |
protected T |
problem |
Constructor and Description |
---|
FlowGraphNode(T problem,
BasicBlock basicBlock) |
Modifier and Type | Method and Description |
---|---|
abstract void |
applyPreMeetHandler()
Initialize this data flow node to compute the new solution
This is done before iteratively calling the MEET operator.
|
abstract void |
applyTransferFunction(Instr i)
Apply transfer function to the instruction
|
void |
buildDataFlowVars()
Builds the data-flow variables (or facts) for a particular node.
|
abstract void |
buildDataFlowVars(Instr i)
Builds the data-flow variables (or facts) for a particular instruction.
|
abstract void |
compute_MEET(org.jruby.dirgra.Edge 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 |
finalizeSolution()
Any required cleanup of state after applying transfer function
|
BasicBlock |
getBB() |
CFG |
getCFG()
Get the control flow graph
|
U |
getExceptionTargetNode() |
boolean |
hasExceptionsRescued() |
void |
init()
Initialize this data flow node for solving the current problem
This is done after building dataflow variables for the problem.
|
void |
initSolution()
Any setting up of state/initialization before applying transfer function
|
abstract boolean |
solutionChanged()
Did dataflow solution for this node change from last time?
|
protected final T extends DataFlowProblem<T,U> problem
protected final BasicBlock basicBlock
public FlowGraphNode(T problem, BasicBlock basicBlock)
public abstract void buildDataFlowVars(Instr i)
public void init()
public abstract void applyPreMeetHandler()
public abstract void compute_MEET(org.jruby.dirgra.Edge e, U pred)
public void initSolution()
public abstract void applyTransferFunction(Instr i)
public abstract boolean solutionChanged()
public void finalizeSolution()
public BasicBlock getBB()
public CFG getCFG()
public void buildDataFlowVars()
public boolean hasExceptionsRescued()
public U getExceptionTargetNode()
Copyright © 2001-2015 JRuby. All Rights Reserved.