@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 ToAryInstr(ToAryInstr toaryinstr) { jvm.method().loadContext(); visit(toaryinstr.getArrayArg()); jvm.method().adapter.ldc(toaryinstr.dontToAryArrays()); jvm.method().invokeHelper("irToAry", IRubyObject.class, ThreadContext.class, IRubyObject.class, boolean.class); jvmStoreLocal(toaryinstr.getResult()); }
@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 ToAryInstr(ToAryInstr toaryinstr) { jvm.method().loadContext(); visit(toaryinstr.getArrayArg()); jvm.method().adapter.ldc(toaryinstr.dontToAryArrays()); jvm.method().invokeHelper("irToAry", IRubyObject.class, ThreadContext.class, IRubyObject.class, boolean.class); jvmStoreLocal(toaryinstr.getResult()); }
@Override public void NthRef(NthRef nthref) { jvmMethod().loadContext(); jvmAdapter().pushInt(nthref.matchNumber); jvmMethod().invokeIRHelper("nthMatch", sig(IRubyObject.class, ThreadContext.class, int.class)); }
@Override public void ReqdArgMultipleAsgnInstr(ReqdArgMultipleAsgnInstr reqdargmultipleasgninstr) { jvm.method().loadContext(); visit(reqdargmultipleasgninstr.getArrayArg()); jvm.method().adapter.checkcast("org/jruby/RubyArray"); jvm.method().adapter.pushInt(reqdargmultipleasgninstr.getPreArgsCount()); jvm.method().adapter.pushInt(reqdargmultipleasgninstr.getIndex()); jvm.method().adapter.pushInt(reqdargmultipleasgninstr.getPostArgsCount()); jvm.method().invokeHelper("irReqdArgMultipleAsgn", IRubyObject.class, ThreadContext.class, RubyArray.class, int.class, int.class, int.class); jvmStoreLocal(reqdargmultipleasgninstr.getResult()); }
@Override public void NthRef(NthRef nthref) { jvmMethod().loadContext(); jvmAdapter().pushInt(nthref.matchNumber); jvmMethod().invokeIRHelper("nthMatch", sig(IRubyObject.class, ThreadContext.class, int.class)); }
@Override public void ReqdArgMultipleAsgnInstr(ReqdArgMultipleAsgnInstr reqdargmultipleasgninstr) { jvm.method().loadContext(); visit(reqdargmultipleasgninstr.getArrayArg()); jvm.method().adapter.checkcast("org/jruby/RubyArray"); jvm.method().adapter.pushInt(reqdargmultipleasgninstr.getPreArgsCount()); jvm.method().adapter.pushInt(reqdargmultipleasgninstr.getIndex()); jvm.method().adapter.pushInt(reqdargmultipleasgninstr.getPostArgsCount()); jvm.method().invokeHelper("irReqdArgMultipleAsgn", IRubyObject.class, ThreadContext.class, RubyArray.class, int.class, int.class, int.class); jvmStoreLocal(reqdargmultipleasgninstr.getResult()); }
@Override public void ToAryInstr(ToAryInstr toaryinstr) { jvmMethod().loadContext(); visit(toaryinstr.getArray()); jvmMethod().invokeIRHelper("irToAry", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class)); jvmStoreLocal(toaryinstr.getResult()); }
@Override public void ArgScopeDepthInstr(ArgScopeDepthInstr instr) { jvmMethod().loadContext(); jvmMethod().loadStaticScope(); jvmMethod().invokeIRHelper("getArgScopeDepth", sig(RubyFixnum.class, ThreadContext.class, StaticScope.class)); jvmStoreLocal(instr.getResult()); }
@Override public void ToAryInstr(ToAryInstr toaryinstr) { jvmMethod().loadContext(); visit(toaryinstr.getArray()); jvmMethod().invokeIRHelper("irToAry", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class)); jvmStoreLocal(toaryinstr.getResult()); }
@Override public void BlockGivenInstr(BlockGivenInstr blockGivenInstr) { jvmMethod().loadContext(); visit(blockGivenInstr.getBlockArg()); jvmMethod().invokeIRHelper("isBlockGiven", sig(RubyBoolean.class, ThreadContext.class, Object.class)); jvmStoreLocal(blockGivenInstr.getResult()); }
@Override public void RescueEQQInstr(RescueEQQInstr rescueeqqinstr) { jvmMethod().loadContext(); visit(rescueeqqinstr.getArg1()); visit(rescueeqqinstr.getArg2()); jvmMethod().invokeIRHelper("isExceptionHandled", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class, Object.class)); jvmStoreLocal(rescueeqqinstr.getResult()); }
@Override public void BlockGivenInstr(BlockGivenInstr blockGivenInstr) { jvmMethod().loadContext(); visit(blockGivenInstr.getBlockArg()); jvmMethod().invokeIRHelper("isBlockGiven", sig(RubyBoolean.class, ThreadContext.class, Object.class)); jvmStoreLocal(blockGivenInstr.getResult()); }
@Override public void ArgScopeDepthInstr(ArgScopeDepthInstr instr) { jvmMethod().loadContext(); jvmMethod().loadStaticScope(); jvmMethod().invokeIRHelper("getArgScopeDepth", sig(RubyFixnum.class, ThreadContext.class, StaticScope.class)); jvmStoreLocal(instr.getResult()); }
@Override public void ReturnOrRethrowSavedExcInstr(ReturnOrRethrowSavedExcInstr instr) { jvmMethod().loadContext(); visit(instr.getReturnValue()); jvmMethod().invokeIRHelper("returnOrRethrowSavedException", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class)); jvmMethod().returnValue(); }
@Override public void RescueEQQInstr(RescueEQQInstr rescueeqqinstr) { jvmMethod().loadContext(); visit(rescueeqqinstr.getArg1()); visit(rescueeqqinstr.getArg2()); jvmMethod().invokeIRHelper("isExceptionHandled", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class, Object.class)); jvmStoreLocal(rescueeqqinstr.getResult()); }
@Override public void ProcessModuleBodyInstr(ProcessModuleBodyInstr processmodulebodyinstr) { jvmMethod().loadContext(); visit(processmodulebodyinstr.getModuleBody()); visit(processmodulebodyinstr.getBlock()); jvmMethod().invokeIRHelper("invokeModuleBody", sig(IRubyObject.class, ThreadContext.class, DynamicMethod.class, Block.class)); jvmStoreLocal(processmodulebodyinstr.getResult()); }
@Override public void ReturnOrRethrowSavedExcInstr(ReturnOrRethrowSavedExcInstr instr) { jvmMethod().loadContext(); visit(instr.getReturnValue()); jvmMethod().invokeIRHelper("returnOrRethrowSavedException", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class)); jvmMethod().returnValue(); }
@Override public void ProcessModuleBodyInstr(ProcessModuleBodyInstr processmodulebodyinstr) { jvmMethod().loadContext(); visit(processmodulebodyinstr.getModuleBody()); visit(processmodulebodyinstr.getBlock()); jvmMethod().invokeIRHelper("invokeModuleBody", sig(IRubyObject.class, ThreadContext.class, DynamicMethod.class, Block.class)); jvmStoreLocal(processmodulebodyinstr.getResult()); }