@Override public void ClassSuperInstr(ClassSuperInstr classsuperinstr) { String name = classsuperinstr.getId(); Operand[] args = classsuperinstr.getCallArgs(); Operand definingModule = classsuperinstr.getDefiningModule(); boolean[] splatMap = classsuperinstr.splatMap(); Operand closure = classsuperinstr.getClosureArg(null); superCommon(name, classsuperinstr, args, definingModule, splatMap, closure); }
@Override public void ClassSuperInstr(ClassSuperInstr classsuperinstr) { String name = classsuperinstr.getId(); Operand[] args = classsuperinstr.getCallArgs(); Operand definingModule = classsuperinstr.getDefiningModule(); boolean[] splatMap = classsuperinstr.splatMap(); Operand closure = classsuperinstr.getClosureArg(null); superCommon(name, classsuperinstr, args, definingModule, splatMap, closure); }
@Override public Object interpret(ThreadContext context, DynamicScope currDynScope, IRubyObject self, Object[] temp, Block aBlock) { IRubyObject[] args = prepareArguments(context, self, getCallArgs(), currDynScope, temp); Block block = prepareBlock(context, self, currDynScope, temp); String methodName = methAddr.getName(); RubyModule definingModule = (RubyModule) getDefiningModule().retrieve(context, self, currDynScope, temp); RubyClass superClass = definingModule.getMetaClass().getSuperClass(); DynamicMethod method = superClass != null ? superClass.searchMethod(methodName) : UndefinedMethod.INSTANCE; Object rVal = method.isUndefined() ? Helpers.callMethodMissing(context, self, method.getVisibility(), methodName, CallType.SUPER, args, block) : method.call(context, self, superClass, methodName, args, block); return hasUnusedResult() ? null : rVal; }
@Override public Object interpret(ThreadContext context, DynamicScope currDynScope, IRubyObject self, Object[] temp, Block aBlock) { IRubyObject[] args = prepareArguments(context, self, getCallArgs(), currDynScope, temp); Block block = prepareBlock(context, self, currDynScope, temp); String methodName = methAddr.getName(); RubyModule definingModule = (RubyModule) getDefiningModule().retrieve(context, self, currDynScope, temp); RubyClass superClass = definingModule.getMetaClass().getSuperClass(); DynamicMethod method = superClass != null ? superClass.searchMethod(methodName) : UndefinedMethod.INSTANCE; Object rVal = method.isUndefined() ? Helpers.callMethodMissing(context, self, method.getVisibility(), methodName, CallType.SUPER, args, block) : method.call(context, self, superClass, methodName, args, block); return hasUnusedResult() ? null : rVal; }