@Override public Object retrieve(ThreadContext context, IRubyObject self, DynamicScope currDynScope, Object[] temp) { BlockBody body = closure.getBlockBody(); closure.getStaticScope().determineModule(); Binding binding = context.currentBinding(self, currDynScope); return new Block(body, binding); }
@Override public Object retrieve(ThreadContext context, IRubyObject self, DynamicScope currDynScope, Object[] temp) { BlockBody body = closure.getBlockBody(); closure.getStaticScope().determineModule(); Binding binding = context.currentBinding(self, currDynScope); return new Block(body, binding); }
@Override public Object retrieve(ThreadContext context, IRubyObject self, StaticScope currScope, DynamicScope currDynScope, Object[] temp) { BlockBody body = closure.getBlockBody(); closure.getStaticScope().determineModule(); // In non-inlining scenarios, this.self will always be %self. // However, in inlined scenarios, this.self will be the self in the original scope where the closure // was present before inlining. IRubyObject selfVal = (this.self instanceof Self) ? self : (IRubyObject)this.self.retrieve(context, self, currScope, currDynScope, temp); Binding binding = context.currentBinding(selfVal, currDynScope); return new Block(body, binding); }
@Override public Object retrieve(ThreadContext context, IRubyObject self, StaticScope currScope, DynamicScope currDynScope, Object[] temp) { BlockBody body = closure.getBlockBody(); closure.getStaticScope().determineModule(); // In non-inlining scenarios, this.self will always be %self. // However, in inlined scenarios, this.self will be the self in the original scope where the closure // was present before inlining. IRubyObject selfVal = (this.self instanceof Self) ? self : (IRubyObject)this.self.retrieve(context, self, currScope, currDynScope, temp); Binding binding = context.currentBinding(selfVal, currDynScope); return new Block(body, binding); }
ii.setupYieldArgsAndYieldResult(yield, yieldBB, cl.getBlockBody().arity());
ii.setupYieldArgsAndYieldResult(yield, yieldBB, cl.getBlockBody().arity());
ii.setupYieldArgsAndYieldResult(yield, beforeInlineBB, cl.getBlockBody().getSignature().arityValue());
ii.setupYieldArgsAndYieldResult(yield, beforeInlineBB, cl.getBlockBody().getSignature().arityValue());