Class CFGInliner
java.lang.Object
org.jruby.ir.transformations.inlining.CFGInliner
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final CFGprivate static final booleanprivate final FullInterpreterContextprivate final IRScopestatic final Logger -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidprivate SimpleCloneInfoprivate CFGprivate voidconnectOuterEdges(BasicBlock beforeInlineBB, BasicBlock afterInlineBB) findCallsiteBB(CallBase call) private VariablegetReceiverVariable(Operand receiver) private voidinlineClosureAtYieldSite(InlineCloneInfo ii, IRClosure cl, BasicBlock yieldBB, YieldInstr yield) inlineMethod(IRScope scopeToInline, RubyModule implClass, int classToken, BasicBlock callBB, CallBase call, boolean cloneHost) private booleanisRecursiveInline(IRScope methodScope) private voidprivate voidprintInlineCFG(CFG aCFG, String label) private voidprintInlineDebugPrologue(IRScope scopeToInline, CallBase call) private voidprivate voidprivate voidprintInlineSplitBBs(BasicBlock beforeBB, BasicBlock afterBB)
-
Field Details
-
LOG
-
debug
private static final boolean debug -
fullInterpreterContext
-
cfg
-
hostScope
-
-
Constructor Details
-
CFGInliner
-
-
Method Details
-
cloneHostInstrs
-
cloneSelf
-
isRecursiveInline
-
getReceiverVariable
-
findCallsiteBB
-
printInlineDebugPrologue
-
printInlineFoundBB
-
printInlineCannotFindCallsiteBB
-
printInlineCFG
-
printInlineEpilogue
private void printInlineEpilogue() -
printInlineSplitBBs
-
inlineMethod
public String inlineMethod(IRScope scopeToInline, RubyModule implClass, int classToken, BasicBlock callBB, CallBase call, boolean cloneHost) -
addMissingJumps
private void addMissingJumps() -
connectOuterEdges
-
inlineClosureAtYieldSite
private void inlineClosureAtYieldSite(InlineCloneInfo ii, IRClosure cl, BasicBlock yieldBB, YieldInstr yield)
-