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 Details

  • Constructor Details

    • FlowGraphNode

      public FlowGraphNode(T problem, BasicBlock basicBlock)
  • Method Details

    • buildDataFlowVars

      public abstract void buildDataFlowVars(Instr i)
      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

      public 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.
    • initSolution

      public void initSolution()
      Any setting up of state/initialization before applying transfer function
    • applyTransferFunction

      public abstract void applyTransferFunction(Instr i)
      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

      public BasicBlock getBB()
    • getCFG

      public CFG 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

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

      public void computeDataFlowInfoBackward(List<U> workList, BitSet bbSet)
    • computeDataFlowInfoForward

      public void computeDataFlowInfoForward(List<U> workList, BitSet bbSet)
    • hasExceptionsRescued

      public boolean hasExceptionsRescued()
    • getExceptionTargetNode

      public U getExceptionTargetNode()