@Override public Instr clone(CloneInfo ii) { // SSS FIXME: Correct in all situations?? return new RecordEndBlockInstr(declaringScope, (WrappedIRClosure) getEndBlockClosure().cloneForInlining(ii)); }
@Override public Instr clone(CloneInfo ii) { // SSS FIXME: Correct in all situations?? return new RecordEndBlockInstr(declaringScope, (WrappedIRClosure) getEndBlockClosure().cloneForInlining(ii)); }
@Override public Object interpret(ThreadContext context, StaticScope currScope, DynamicScope currDynScope, IRubyObject self, Object[] temp) { Block blk = (Block) getEndBlockClosure().retrieve(context, self, currScope, context.getCurrentScope(), temp); IRRuntimeHelpers.pushExitBlock(context, blk); return null; }
@Override public Object interpret(ThreadContext context, StaticScope currScope, DynamicScope currDynScope, IRubyObject self, Object[] temp) { Block blk = (Block) getEndBlockClosure().retrieve(context, self, currScope, context.getCurrentScope(), temp); IRRuntimeHelpers.pushExitBlock(context, blk); return null; }
@Override public void encode(IRWriterEncoder e) { super.encode(e); e.encode(getDeclaringScope()); e.encode(getEndBlockClosure()); }
@Override public void encode(IRWriterEncoder e) { super.encode(e); e.encode(getDeclaringScope()); e.encode(getEndBlockClosure()); }
@Override public void RecordEndBlockInstr(RecordEndBlockInstr recordEndBlockInstr) { jvmMethod().loadContext(); jvmMethod().loadContext(); visit(recordEndBlockInstr.getEndBlockClosure()); jvmMethod().invokeIRHelper("getBlockFromObject", sig(Block.class, ThreadContext.class, Object.class)); jvmMethod().invokeIRHelper("pushExitBlock", sig(void.class, ThreadContext.class, Block.class)); }
@Override public void RecordEndBlockInstr(RecordEndBlockInstr recordEndBlockInstr) { jvmMethod().loadContext(); jvmMethod().loadContext(); visit(recordEndBlockInstr.getEndBlockClosure()); jvmMethod().invokeIRHelper("getBlockFromObject", sig(Block.class, ThreadContext.class, Object.class)); jvmMethod().invokeIRHelper("pushExitBlock", sig(void.class, ThreadContext.class, Block.class)); }