@Override public void TemporaryFloatVariable(TemporaryFloatVariable temporaryfloatvariable) { jvmLoadLocal(temporaryfloatvariable); }
@Override public void TemporaryFixnumVariable(TemporaryFixnumVariable temporaryfixnumvariable) { jvmLoadLocal(temporaryfixnumvariable); }
@Override public void TemporaryVariable(TemporaryVariable temporaryvariable) { jvmLoadLocal(temporaryvariable); }
@Override public void TemporaryLocalVariable(TemporaryLocalVariable temporarylocalvariable) { jvmLoadLocal(temporarylocalvariable); }
@Override public void TemporaryBooleanVariable(TemporaryBooleanVariable temporarybooleanvariable) { jvmLoadLocal(temporarybooleanvariable); }
@Override public void TemporaryFloatVariable(TemporaryFloatVariable temporaryfloatvariable) { jvmLoadLocal(temporaryfloatvariable); }
@Override public void TemporaryVariable(TemporaryVariable temporaryvariable) { jvmLoadLocal(temporaryvariable); }
@Override public void TemporaryLocalVariable(TemporaryLocalVariable temporarylocalvariable) { jvmLoadLocal(temporarylocalvariable); }
@Override public void TemporaryFixnumVariable(TemporaryFixnumVariable temporaryfixnumvariable) { jvmLoadLocal(temporaryfixnumvariable); }
@Override public void TemporaryBooleanVariable(TemporaryBooleanVariable temporarybooleanvariable) { jvmLoadLocal(temporarybooleanvariable); }
@Override public void ReifyClosureInstr(ReifyClosureInstr reifyclosureinstr) { jvmMethod().loadRuntime(); jvmLoadLocal("$blockArg"); jvmMethod().invokeIRHelper("newProc", sig(IRubyObject.class, Ruby.class, Block.class)); jvmStoreLocal(reifyclosureinstr.getResult()); }
@Override public void AliasInstr(AliasInstr aliasInstr) { IRBytecodeAdapter m = jvm.method(); m.loadContext(); m.loadSelf(); jvmLoadLocal(DYNAMIC_SCOPE); visit(aliasInstr.getNewName()); visit(aliasInstr.getOldName()); m.invokeIRHelper("defineAlias", sig(void.class, ThreadContext.class, IRubyObject.class, DynamicScope.class, IRubyObject.class, IRubyObject.class)); }
@Override public void WrappedIRClosure(WrappedIRClosure wrappedirclosure) { IRClosure closure = wrappedirclosure.getClosure(); jvmMethod().loadContext(); visit(closure.getSelf()); jvmLoadLocal(DYNAMIC_SCOPE); jvmMethod().prepareBlock(closure.getHandle(), closure.getSignature(), jvm.clsData().clsName); }
@Override public void WrappedIRClosure(WrappedIRClosure wrappedirclosure) { IRClosure closure = wrappedirclosure.getClosure(); jvmMethod().loadContext(); visit(closure.getSelf()); jvmLoadLocal(DYNAMIC_SCOPE); jvmMethod().prepareBlock(closure.getHandle(), closure.getSignature(), jvm.clsData().clsName); }
@Override public void UndefMethodInstr(UndefMethodInstr undefmethodinstr) { jvmMethod().loadContext(); visit(undefmethodinstr.getMethodName()); jvmLoadLocal(DYNAMIC_SCOPE); jvmMethod().loadSelf(); jvmMethod().invokeIRHelper("undefMethod", sig(IRubyObject.class, ThreadContext.class, Object.class, DynamicScope.class, IRubyObject.class)); jvmStoreLocal(undefmethodinstr.getResult()); }
@Override public void NonlocalReturnInstr(NonlocalReturnInstr returninstr) { jvmMethod().loadContext(); jvmLoadLocal(DYNAMIC_SCOPE); jvmMethod().loadSelfBlock(); visit(returninstr.getReturnValue()); jvmMethod().invokeIRHelper("initiateNonLocalReturn", sig(IRubyObject.class, ThreadContext.class, DynamicScope.class, Block.class, IRubyObject.class)); jvmMethod().returnValue(); }
@Override public void UndefMethodInstr(UndefMethodInstr undefmethodinstr) { jvmMethod().loadContext(); visit(undefmethodinstr.getMethodName()); jvmLoadLocal(DYNAMIC_SCOPE); jvmMethod().loadSelf(); jvmMethod().invokeIRHelper("undefMethod", sig(IRubyObject.class, ThreadContext.class, Object.class, DynamicScope.class, IRubyObject.class)); jvmStoreLocal(undefmethodinstr.getResult()); }
@Override public void CheckForLJEInstr(CheckForLJEInstr checkForljeinstr) { jvmMethod().loadContext(); jvmLoadLocal(DYNAMIC_SCOPE); jvmAdapter().ldc(checkForljeinstr.isDefinedWithinMethod()); jvmMethod().loadSelfBlock(); jvmAdapter().invokestatic(p(IRRuntimeHelpers.class), "checkForLJE", sig(void.class, ThreadContext.class, DynamicScope.class, boolean.class, Block.class)); }
@Override public void NonlocalReturnInstr(NonlocalReturnInstr returninstr) { jvmMethod().loadContext(); jvmLoadLocal(DYNAMIC_SCOPE); jvmMethod().loadSelfBlock(); visit(returninstr.getReturnValue()); jvmMethod().invokeIRHelper("initiateNonLocalReturn", sig(IRubyObject.class, ThreadContext.class, DynamicScope.class, Block.class, IRubyObject.class)); jvmMethod().returnValue(); }
@Override public void BreakInstr(BreakInstr breakInstr) { jvmMethod().loadContext(); jvmLoadLocal(DYNAMIC_SCOPE); visit(breakInstr.getReturnValue()); jvmMethod().loadSelfBlock(); jvmAdapter().invokestatic(p(IRRuntimeHelpers.class), "initiateBreak", sig(IRubyObject.class, ThreadContext.class, DynamicScope.class, IRubyObject.class, Block.class)); jvmMethod().returnValue(); }