public static Handle getBootstrapHandle(String name, Class type, String sig) { return new Handle( Opcodes.H_INVOKESTATIC, p(type), name, sig, false); }
public static Handle bytelist() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "bytelist", sig(CallSite.class, Lookup.class, String.class, MethodType.class, String.class, String.class), false); }
public static Handle global() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "globalBootstrap", sig(CallSite.class, Lookup.class, String.class, MethodType.class, String.class, int.class), false); }
public static Handle prepareBlock() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "prepareBlock", sig(CallSite.class, Lookup.class, String.class, MethodType.class, MethodHandle.class, MethodHandle.class, long.class), false); }
public static Handle string() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "string", sig(CallSite.class, Lookup.class, String.class, MethodType.class, String.class, String.class, int.class), false); }
public static Handle global() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "globalBootstrap", sig(CallSite.class, Lookup.class, String.class, MethodType.class, String.class, int.class), false); }
public static Handle string() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "string", sig(CallSite.class, Lookup.class, String.class, MethodType.class, String.class, String.class, int.class), false); }
public static Handle kwargsHash() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "kwargsHash", sig(CallSite.class, Lookup.class, String.class, MethodType.class), false); }
public static Handle contextValueString() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "contextValueString", sig(CallSite.class, Lookup.class, String.class, MethodType.class, String.class), false); }
public static Handle isNilBoot() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "isNil", sig(CallSite.class, Lookup.class, String.class, MethodType.class), false); }
public static Handle isTrueBoot() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "isTrue", sig(CallSite.class, Lookup.class, String.class, MethodType.class), false); }
public static Handle isNilBoot() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "isNil", sig(CallSite.class, Lookup.class, String.class, MethodType.class), false); }
public static Handle contextValue() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "contextValue", sig(CallSite.class, Lookup.class, String.class, MethodType.class), false); }
public static Handle fstring() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "fstring", sig(CallSite.class, Lookup.class, String.class, MethodType.class, String.class, String.class, int.class, String.class, int.class), false); }
public static Handle array() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "array", sig(CallSite.class, Lookup.class, String.class, MethodType.class), false); }
public static Handle hash() { return new Handle( Opcodes.H_INVOKESTATIC, p(Bootstrap.class), "hash", sig(CallSite.class, Lookup.class, String.class, MethodType.class), false); }
@Override public void prepareBlock(Handle handle, org.jruby.runtime.Signature signature, String className) { Handle scopeHandle = new Handle( Opcodes.H_GETSTATIC, getClassData().clsName, handle.getName() + "_IRScope", ci(IRScope.class), false); long encodedSignature = signature.encode(); adapter.invokedynamic(handle.getName(), sig(Block.class, ThreadContext.class, IRubyObject.class, DynamicScope.class), Bootstrap.prepareBlock(), handle, scopeHandle, encodedSignature); }
protected Handle emitClosure(IRClosure closure, boolean print) { /* Compile the closure like a method */ String name = JavaNameMangler.encodeScopeForBacktrace(closure) + '$' + methodIndex++; emitScope(closure, name, CLOSURE_SIGNATURE, false, print); return new Handle( Opcodes.H_INVOKESTATIC, jvm.clsData().clsName, name, sig(CLOSURE_SIGNATURE.type().returnType(), CLOSURE_SIGNATURE.type().parameterArray()), false); }
@Override public void prepareBlock(Handle handle, org.jruby.runtime.Signature signature, String className) { Handle scopeHandle = new Handle( Opcodes.H_GETSTATIC, getClassData().clsName, handle.getName() + "_IRScope", ci(IRScope.class), false); long encodedSignature = signature.encode(); adapter.invokedynamic(handle.getName(), sig(Block.class, ThreadContext.class, IRubyObject.class, DynamicScope.class), Bootstrap.prepareBlock(), handle, scopeHandle, encodedSignature); }
protected Handle emitModuleBody(IRModuleBody method) { String name = JavaNameMangler.encodeScopeForBacktrace(method) + '$' + methodIndex++; Signature signature = signatureFor(method, false); emitScope(method, name, signature, false, true); return new Handle( Opcodes.H_INVOKESTATIC, jvm.clsData().clsName, name, sig(signature.type().returnType(), signature.type().parameterArray()), false); }