@Override public String[] toStringNonOperandArgs() { return new String[] {"index:" + getArgIndex(), "req: " + requiredArgs, "pre: " + preArgs}; }
@Override public String[] toStringNonOperandArgs() { return new String[] {"index:" + getArgIndex(), "req: " + requiredArgs, "pre: " + preArgs}; }
@Override public void ReceiveOptArgInstr(ReceiveOptArgInstr instr) { // FIXME: Only works when args is in an array rather than being flattened out // FIXME: Missing kwargs 2.0 support (kwArgHashCount value) jvm.method().adapter.pushInt(instr.getArgIndex() + instr.numUsedArgs); // MIN reqd args jvm.method().adapter.pushInt(instr.getArgIndex() + instr.argOffset); // args array offset jvm.method().adapter.aload(3); // FIXME: what is the correct lvar index for args[]? jvm.method().invokeHelper("irLoadOptArg", IRubyObject.class, int.class, int.class, IRubyObject[].class); }
@Override public void ReceiveOptArgInstr(ReceiveOptArgInstr instr) { // FIXME: Only works when args is in an array rather than being flattened out // FIXME: Missing kwargs 2.0 support (kwArgHashCount value) jvm.method().adapter.pushInt(instr.getArgIndex() + instr.numUsedArgs); // MIN reqd args jvm.method().adapter.pushInt(instr.getArgIndex() + instr.argOffset); // args array offset jvm.method().adapter.aload(3); // FIXME: what is the correct lvar index for args[]? jvm.method().invokeHelper("irLoadOptArg", IRubyObject.class, int.class, int.class, IRubyObject[].class); }
@Override public void encode(IRWriterEncoder e) { super.encode(e); e.encode(requiredArgs); e.encode(getPreArgs()); e.encode(getArgIndex()); }
@Override public void encode(IRWriterEncoder e) { super.encode(e); e.encode(requiredArgs); e.encode(getPreArgs()); e.encode(getArgIndex()); }
@Override public void ReceiveOptArgInstr(ReceiveOptArgInstr instr) { jvmMethod().loadContext(); jvmMethod().loadArgs(); jvmAdapter().pushInt(instr.requiredArgs); jvmAdapter().pushInt(instr.preArgs); jvmAdapter().pushInt(instr.getArgIndex()); jvmAdapter().ldc(jvm.methodData().scope.receivesKeywordArgs()); jvmMethod().invokeIRHelper("receiveOptArg", sig(IRubyObject.class, ThreadContext.class, IRubyObject[].class, int.class, int.class, int.class, boolean.class)); jvmStoreLocal(instr.getResult()); }
@Override public void ReceiveOptArgInstr(ReceiveOptArgInstr instr) { jvmMethod().loadContext(); jvmMethod().loadArgs(); jvmAdapter().pushInt(instr.requiredArgs); jvmAdapter().pushInt(instr.preArgs); jvmAdapter().pushInt(instr.getArgIndex()); jvmAdapter().ldc(jvm.methodData().scope.receivesKeywordArgs()); jvmMethod().invokeIRHelper("receiveOptArg", sig(IRubyObject.class, ThreadContext.class, IRubyObject[].class, int.class, int.class, int.class, boolean.class)); jvmStoreLocal(instr.getResult()); }