@Override public Operand cloneForInlining(InlinerInfo ii) { return ii.getRenamedVariable(this); } }
@Override public Operand cloneForInlining(CloneInfo ii) { return ii.getRenamedVariable(this); } }
@Override public Operand cloneForInlining(InlinerInfo ii) { return ii.getRenamedLabel(this); }
@Override public Instr clone(CloneInfo info) { if (info instanceof SimpleCloneInfo) return new LoadFrameClosureInstr(info.getRenamedVariable(result)); // SSS FIXME: This code below is for inlining and is untested. InlineCloneInfo ii = (InlineCloneInfo) info; // SSS FIXME: This is not strictly correct -- we have to wrap the block into an // operand type that converts the static code block to a proc which is a closure. if (ii.getCallClosure() instanceof WrappedIRClosure) return NopInstr.NOP; return new CopyInstr(ii.getRenamedVariable(result), ii.getCallClosure()); }
@Override public Operand cloneForInlining(CloneInfo info) { // Making interp instrs so that if JIT hits IRClosure we will not concurrently modify the same IRScope. if (info instanceof SimpleCloneInfo && !((SimpleCloneInfo) info).isEnsureBlockCloneMode()) { // FIXME: It really bothers me we do not clone closure here but cloning like main clone case loses interpContext + other things. return new WrappedIRClosure(info.getRenamedVariable(self), closure); } return new WrappedIRClosure(info.getRenamedVariable(self), closure.cloneForInlining(info)); }
@Override public Instr clone(CloneInfo info) { if (info instanceof SimpleCloneInfo) return new ReifyClosureInstr(info.getRenamedVariable(getResult()), info.getRenamedVariable(getSource())); InlineCloneInfo ii = (InlineCloneInfo) info; return new CopyInstr(ii.getRenamedVariable(result), ii.getRenamedVariable(getSource())); }
@Override public Operand cloneForInlining(CloneInfo ii) { return ii.getRenamedLabel(this); }
@Override public Operand cloneForInlining(InlinerInfo ii) { return ii.getSelfValue(this); }
public IRScope getHostScope() { return getScope(); }
public IRScope getNewLexicalParentForClosure() { return inClosureCloneMode ? clonedClosure : getInlineHostScope(); }
@Override public Instr clone(CloneInfo info) { if (info instanceof SimpleCloneInfo) return new LoadImplicitClosureInstr(info.getRenamedVariable(result)); InlineCloneInfo ii = (InlineCloneInfo) info; return new CopyInstr(ii.getRenamedVariable(result), ii.getCallClosure()); }
@Override public Operand cloneForInlining(CloneInfo info) { // Making interp instrs so that if JIT hits IRClosure we will not concurrently modify the same IRScope. if (info instanceof SimpleCloneInfo && !((SimpleCloneInfo) info).isEnsureBlockCloneMode()) { // FIXME: It really bothers me we do not clone closure here but cloning like main clone case loses interpContext + other things. return new WrappedIRClosure(info.getRenamedVariable(self), closure); } return new WrappedIRClosure(info.getRenamedVariable(self), closure.cloneForInlining(info)); }
@Override public Operand cloneForInlining(InlinerInfo ii) { return ii.getRenamedVariable(this); } }
@Override public Operand cloneForInlining(CloneInfo ii) { return ii.getRenamedVariable(this); } }
@Override public Operand cloneForInlining(InlinerInfo ii) { return ii.getRenamedLabel(this); }
@Override public Operand cloneForInlining(CloneInfo ii) { return ii.getRenamedLabel(this); }
@Override public Operand cloneForInlining(InlinerInfo ii) { return ii.getSelfValue(this); }
public IRScope getHostScope() { return getScope(); }
public IRScope getNewLexicalParentForClosure() { return inClosureCloneMode ? clonedClosure : getInlineHostScope(); }
@Override public Instr clone(CloneInfo info) { if (info instanceof SimpleCloneInfo) return new LoadImplicitClosureInstr(info.getRenamedVariable(result)); InlineCloneInfo ii = (InlineCloneInfo) info; return new CopyInstr(ii.getRenamedVariable(result), ii.getCallClosure()); }