public void appendObject(boolean is19) { if (is19) { method.invokevirtual(p(RubyString.class), "append19", sig(RubyString.class, params(IRubyObject.class))); } else { method.invokevirtual(p(RubyString.class), "append", sig(RubyString.class, params(IRubyObject.class))); } }
public void createNewArray(boolean lightweight) { loadRuntime(); // put under object array already present method.swap(); if (lightweight) { method.invokestatic(p(RubyArray.class), "newArrayNoCopyLight", sig(RubyArray.class, params(Ruby.class, IRubyObject[].class))); } else { method.invokestatic(p(RubyArray.class), "newArrayNoCopy", sig(RubyArray.class, params(Ruby.class, IRubyObject[].class))); } }
@Override public void SaveBindingVisibilityInstr(SaveBindingVisibilityInstr instr) { jvmMethod().loadSelfBlock(); jvmAdapter().invokevirtual(p(Block.class), "getBinding", sig(Binding.class)); jvmAdapter().invokevirtual(p(Binding.class), "getFrame", sig(Frame.class)); jvmAdapter().invokevirtual(p(Frame.class), "getVisibility", sig(Visibility.class)); jvmStoreLocal(instr.getResult()); }
private void boxResult(SkinnyMethodAdapter mv, String boxMethodName) { mv.invokestatic(p(JITRuntime.class), boxMethodName, sig(IRubyObject.class, ThreadContext.class, getInvokerIntType())); }
public static void unboxAndCast(SkinnyMethodAdapter m, Class paramClass) { if (paramClass.isPrimitive()) { Class boxType = getBoxType(paramClass); m.checkcast(p(boxType)); m.invokevirtual(p(boxType), paramClass.toString() + "Value", sig(paramClass)); } else if (paramClass != Object.class) { m.checkcast(p(paramClass)); } }
@Override public void SValue(SValue svalue) { visit(svalue.getArray()); jvmAdapter().dup(); jvmAdapter().instance_of(p(RubyArray.class)); org.objectweb.asm.Label after = new org.objectweb.asm.Label(); jvmAdapter().iftrue(after); jvmAdapter().pop(); jvmMethod().pushNil(); jvmAdapter().label(after); }
@Override public void StandardError(StandardError standarderror) { jvmMethod().loadRuntime(); jvmAdapter().invokevirtual(p(Ruby.class), "getStandardError", sig(RubyClass.class)); }
private void boxResult(SkinnyMethodAdapter mv, String boxMethodName) { mv.invokestatic(p(JITRuntime.class), boxMethodName, sig(IRubyObject.class, ThreadContext.class, getInvokerIntType())); }
public void checkpoint() { loadContext(); adapter.invokevirtual( p(ThreadContext.class), "callThreadPoll", sig(void.class)); }
public void aprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(Object.class))); }
public void createNewArray(boolean lightweight) { loadRuntime(); // put under object array already present method.swap(); if (lightweight) { method.invokestatic(p(RubyArray.class), "newArrayNoCopyLight", sig(RubyArray.class, params(Ruby.class, IRubyObject[].class))); } else { method.invokestatic(p(RubyArray.class), "newArrayNoCopy", sig(RubyArray.class, params(Ruby.class, IRubyObject[].class))); } }
@Override public void SValue(SValue svalue) { visit(svalue.getArray()); jvmAdapter().dup(); jvmAdapter().instance_of(p(RubyArray.class)); org.objectweb.asm.Label after = new org.objectweb.asm.Label(); jvmAdapter().iftrue(after); jvmAdapter().pop(); jvmMethod().pushNil(); jvmAdapter().label(after); }
@Override public void RestoreBindingVisibilityInstr(RestoreBindingVisibilityInstr instr) { jvmMethod().loadSelfBlock(); jvmAdapter().invokevirtual(p(Block.class), "getBinding", sig(Binding.class)); jvmAdapter().invokevirtual(p(Binding.class), "getFrame", sig(Frame.class)); visit(instr.getVisibility()); jvmAdapter().invokevirtual(p(Frame.class), "setVisibility", sig(void.class, Visibility.class)); }
private void boxResult(SkinnyMethodAdapter mv, String boxMethodName) { mv.invokestatic(p(JITRuntime.class), boxMethodName, sig(IRubyObject.class, ThreadContext.class, getInvokerIntType())); }
public void pushBoolean(boolean b) { adapter.aload(0); adapter.getfield(p(ThreadContext.class), "runtime", ci(Ruby.class)); if (b) { adapter.invokevirtual(p(Ruby.class), "getTrue", sig(RubyBoolean.class)); } else { adapter.invokevirtual(p(Ruby.class), "getFalse", sig(RubyBoolean.class)); } }
public void iprintln() { dup(); getstatic(p(System.class), "out", ci(PrintStream.class)); swap(); invokevirtual(p(PrintStream.class), "println", sig(void.class, params(int.class))); }
public void createNewRange(CompilerCallback beginEndCallback, boolean isExclusive) { loadRuntime(); loadThreadContext(); beginEndCallback.call(this); if (isExclusive) { method.invokestatic(p(RubyRange.class), "newExclusiveRange", sig(RubyRange.class, params(Ruby.class, ThreadContext.class, IRubyObject.class, IRubyObject.class))); } else { method.invokestatic(p(RubyRange.class), "newInclusiveRange", sig(RubyRange.class, params(Ruby.class, ThreadContext.class, IRubyObject.class, IRubyObject.class))); } }
@Override public void StandardError(StandardError standarderror) { jvmMethod().loadRuntime(); jvmAdapter().invokevirtual(p(Ruby.class), "getStandardError", sig(RubyClass.class)); }
public void pushBignum(BigInteger bigint) { String bigintStr = bigint.toString(); loadRuntime(); adapter.ldc(bigintStr); adapter.invokestatic(p(RubyBignum.class), "newBignum", sig(RubyBignum.class, Ruby.class, String.class)); }
public void checkpoint() { loadContext(); adapter.invokevirtual( p(ThreadContext.class), "callThreadPoll", sig(void.class)); }