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

java.lang.Object
org.jruby.ir.dataflow.DataFlowProblem<T,U>
Direct Known Subclasses:
DefinedVariablesProblem, LiveVariablesProblem, LoadLocalVarPlacementProblem, StoreLocalVarPlacementProblem, UnboxableOpsAnalysisProblem

public abstract class DataFlowProblem<T extends DataFlowProblem<T,U>,U extends FlowGraphNode<T,U>> extends Object
  • Field Details

  • Constructor Details

  • Method Details

    • buildFlowGraphNode

      public abstract U buildFlowGraphNode(BasicBlock bb)
    • getName

      public abstract String getName()
    • isEmpty

      public boolean isEmpty()
      Are there are available data flow facts to run this problem? SSS FIXME: Silly optimization?
    • getFlowDirection

      public DataFlowProblem.DF_Direction getFlowDirection()
    • setup

      public void setup(FullInterpreterContext fic)
    • getFIC

      public FullInterpreterContext getFIC()
    • compute_MOP_Solution

      public void compute_MOP_Solution()
    • generateWorkList

      protected LinkedList<U> generateWorkList()
      Generate an ordered list of flow graph nodes in a forward or backward order depending on direction.
    • getDFVarsCount

      public int getDFVarsCount()
    • getDataFlowVarsForOutput

      public String getDataFlowVarsForOutput()
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getFlowGraphNode

      public U getFlowGraphNode(BasicBlock bb)
    • getEntryNode

      public U getEntryNode()
    • getExitNode

      public U getExitNode()
    • addDataFlowVar

      public int addDataFlowVar()