@Override public Instr cloneForInlining(InlinerInfo inlinerInfo) { return new SuperMethodBoundInstr((Variable) getResult().cloneForInlining(inlinerInfo), getObject().cloneForInlining(inlinerInfo)); }
@Override public String toString() { return super.toString() + "(" + getObject() + ")"; }
return buildDefinitionCheck(s, new SuperMethodBoundInstr(s.getNewTemporaryVariable(), getSelf(s)), "super"); case SUPERNODE: { Label undefLabel = s.getNewLabel(); Variable tmpVar = s.getNewTemporaryVariable(); s.addInstr(new SuperMethodBoundInstr(tmpVar, getSelf(s))); s.addInstr(BEQInstr.create(tmpVar, manager.getFalse(), undefLabel)); Operand superDefnVal = buildGetArgumentDefinition(((SuperNode) node).getArgsNode(), s, "super");
@Override public String toString() { return super.toString() + "(" + getObject() + ")"; }
return buildDefinitionCheck(s, new SuperMethodBoundInstr(s.getNewTemporaryVariable(), getSelf(s)), "super"); case SUPERNODE: { Label undefLabel = s.getNewLabel(); Variable tmpVar = s.getNewTemporaryVariable(); s.addInstr(new SuperMethodBoundInstr(tmpVar, getSelf(s))); s.addInstr(BEQInstr.create(tmpVar, manager.getFalse(), undefLabel)); Operand superDefnVal = buildGetArgumentDefinition(((SuperNode) node).getArgsNode(), s, "super");
@Override public Instr cloneForInlining(InlinerInfo inlinerInfo) { return new SuperMethodBoundInstr((Variable) getResult().cloneForInlining(inlinerInfo), getObject().cloneForInlining(inlinerInfo)); }
@Override public Object interpret(ThreadContext context, DynamicScope currDynScope, IRubyObject self, Object[] temp, Block block) { IRubyObject receiver = (IRubyObject) getObject().retrieve(context, self, currDynScope, temp); boolean flag = false; String frameName = context.getFrameName(); if (frameName != null) { RubyModule frameClass = context.getFrameKlazz(); if (frameClass != null) { flag = Helpers.findImplementerIfNecessary(receiver.getMetaClass(), frameClass).getSuperClass().isMethodBound(frameName, false); } } return context.runtime.newBoolean(flag); }
@Override public Object interpret(ThreadContext context, DynamicScope currDynScope, IRubyObject self, Object[] temp, Block block) { IRubyObject receiver = (IRubyObject) getObject().retrieve(context, self, currDynScope, temp); boolean flag = false; String frameName = context.getFrameName(); if (frameName != null) { RubyModule frameClass = context.getFrameKlazz(); if (frameClass != null) { flag = Helpers.findImplementerIfNecessary(receiver.getMetaClass(), frameClass).getSuperClass().isMethodBound(frameName, false); } } return context.runtime.newBoolean(flag); }