@Override public void addInstr(Instr i) { // Accumulate block arguments if (i instanceof ReceiveRestArgInstr) blockArgs.add(new Splat(((ReceiveRestArgInstr)i).getResult())); else if (i instanceof ReceiveArgBase) blockArgs.add(((ReceiveArgBase) i).getResult()); super.addInstr(i); }
@Override public void addInstr(Instr i) { // Accumulate block arguments if (i instanceof ReceiveRestArgInstr) blockArgs.add(new Splat(((ReceiveRestArgInstr)i).getResult())); else if (i instanceof ReceiveArgBase) blockArgs.add(((ReceiveArgBase) i).getResult()); super.addInstr(i); }
@Override public void addInstr(Instr i) { // Accumulate call arguments if (i instanceof ReceiveRestArgInstr) callArgs.add(new Splat(((ReceiveRestArgInstr)i).getResult())); else if (i instanceof ReceiveArgBase) callArgs.add(((ReceiveArgBase) i).getResult()); super.addInstr(i); }
@Override public void addInstr(Instr i) { // Accumulate call arguments if (i instanceof ReceiveRestArgInstr) callArgs.add(new Splat(((ReceiveRestArgInstr)i).getResult())); else if (i instanceof ReceiveArgBase) callArgs.add(((ReceiveArgBase) i).getResult()); super.addInstr(i); }
@Override public String toString() { return (isDead() ? "[DEAD]" : "") + (hasUnusedResult() ? "[DEAD-RESULT]" : "") + getResult() + " = " + getOperation() + "(" + numUsedArgs + ", " + argIndex + ")"; }
@Override public String toString() { return (isDead() ? "[DEAD]" : "") + (hasUnusedResult() ? "[DEAD-RESULT]" : "") + getResult() + " = " + getOperation() + "(" + numUsedArgs + ", " + argIndex + ")"; }
private static void extractCallOperands(List<Operand> callArgs, List<KeyValuePair<Operand, Operand>> keywordArgs, Instr instr) { if (instr instanceof ReceiveKeywordRestArgInstr) { // Always add the keyword rest arg to the beginning keywordArgs.add(0, new KeyValuePair<Operand, Operand>(Symbol.KW_REST_ARG_DUMMY, ((ReceiveArgBase) instr).getResult())); } else if (instr instanceof ReceiveKeywordArgInstr) { ReceiveKeywordArgInstr receiveKwargInstr = (ReceiveKeywordArgInstr) instr; keywordArgs.add(new KeyValuePair<Operand, Operand>(new Symbol(receiveKwargInstr.getKey()), receiveKwargInstr.getResult())); } else if (instr instanceof ReceiveRestArgInstr) { callArgs.add(new Splat(((ReceiveRestArgInstr) instr).getResult())); } else if (instr instanceof ReceiveArgBase) { callArgs.add(((ReceiveArgBase) instr).getResult()); } }
private static void extractCallOperands(List<Operand> callArgs, List<KeyValuePair<Operand, Operand>> keywordArgs, Instr instr) { if (instr instanceof ReceiveKeywordRestArgInstr) { // Always add the keyword rest arg to the beginning keywordArgs.add(0, new KeyValuePair<Operand, Operand>(Symbol.KW_REST_ARG_DUMMY, ((ReceiveArgBase) instr).getResult())); } else if (instr instanceof ReceiveKeywordArgInstr) { ReceiveKeywordArgInstr receiveKwargInstr = (ReceiveKeywordArgInstr) instr; keywordArgs.add(new KeyValuePair<Operand, Operand>(new Symbol(receiveKwargInstr.getKey()), receiveKwargInstr.getResult())); } else if (instr instanceof ReceiveRestArgInstr) { callArgs.add(new Splat(((ReceiveRestArgInstr) instr).getResult())); } else if (instr instanceof ReceiveArgBase) { callArgs.add(((ReceiveArgBase) instr).getResult()); } }
@Override public void ReceiveRestArgInstr(ReceiveRestArgInstr instr) { jvmMethod().loadContext(); jvmMethod().loadArgs(); jvmAdapter().pushInt(instr.required); jvmAdapter().pushInt(instr.getArgIndex()); jvmAdapter().ldc(jvm.methodData().scope.receivesKeywordArgs()); jvmMethod().invokeIRHelper("receiveRestArg", sig(IRubyObject.class, ThreadContext.class, Object[].class, int.class, int.class, boolean.class)); jvmStoreLocal(instr.getResult()); }
@Override public void ReceiveRestArgInstr(ReceiveRestArgInstr instr) { jvmMethod().loadContext(); jvmMethod().loadArgs(); jvmAdapter().pushInt(instr.required); jvmAdapter().pushInt(instr.getArgIndex()); jvmAdapter().ldc(jvm.methodData().scope.receivesKeywordArgs()); jvmMethod().invokeIRHelper("receiveRestArg", sig(IRubyObject.class, ThreadContext.class, Object[].class, int.class, int.class, boolean.class)); jvmStoreLocal(instr.getResult()); }