Class CFGInliner

java.lang.Object
org.jruby.ir.transformations.inlining.CFGInliner

public class CFGInliner extends Object
  • Field Details

    • LOG

      public static final Logger LOG
    • debug

      private static final boolean debug
    • fullInterpreterContext

      private final FullInterpreterContext fullInterpreterContext
    • cfg

      private final CFG cfg
    • hostScope

      private final IRScope hostScope
  • Constructor Details

  • Method Details

    • cloneHostInstrs

      private SimpleCloneInfo cloneHostInstrs()
    • cloneSelf

      private CFG cloneSelf(InlineCloneInfo ii)
    • isRecursiveInline

      private boolean isRecursiveInline(IRScope methodScope)
    • getReceiverVariable

      private Variable getReceiverVariable(Operand receiver)
    • findCallsiteBB

      public BasicBlock findCallsiteBB(CallBase call)
    • printInlineDebugPrologue

      private void printInlineDebugPrologue(IRScope scopeToInline, CallBase call)
    • printInlineFoundBB

      private void printInlineFoundBB(BasicBlock bb)
    • printInlineCannotFindCallsiteBB

      private void printInlineCannotFindCallsiteBB(CallBase call)
    • printInlineCFG

      private void printInlineCFG(CFG aCFG, String label)
    • printInlineEpilogue

      private void printInlineEpilogue()
    • printInlineSplitBBs

      private void printInlineSplitBBs(BasicBlock beforeBB, BasicBlock afterBB)
    • inlineMethod

      public String inlineMethod(IRScope scopeToInline, RubyModule implClass, int classToken, BasicBlock callBB, CallBase call, boolean cloneHost)
    • addMissingJumps

      private void addMissingJumps()
    • connectOuterEdges

      private void connectOuterEdges(BasicBlock beforeInlineBB, BasicBlock afterInlineBB)
    • inlineClosureAtYieldSite

      private void inlineClosureAtYieldSite(InlineCloneInfo ii, IRClosure cl, BasicBlock yieldBB, YieldInstr yield)