@Override public Operand cloneForInlining(InlinerInfo ii) { return ii.getRenamedVariable(this); } }
@Override public Instr cloneForInlining(InlinerInfo ii) { // SSS FIXME: Do we need to rename lvar really? It is just a name-proxy! return new LoadLocalVarInstr(scope, (TemporaryVariable)ii.getRenamedVariable(result), (LocalVariable)ii.getRenamedVariable(lvar)); }
@Override public Instr cloneForBlockCloning(InlinerInfo ii) { // Added this copy for code clarity // argIndex is relative to start of opt args and not the start of arg array int optArgIndex = this.argIndex; return new ReceiveOptArgInstr(ii.getRenamedVariable(result), numUsedArgs, argOffset, optArgIndex); }
@Override public Instr cloneForInlining(InlinerInfo ii) { // SSS FIXME: So, do we clone the module body scope or not? return new DefineModuleInstr(ii.getRenamedVariable(result), this.newIRModuleBody, container.cloneForInlining(ii)); }
@Override public Instr cloneForInlining(InlinerInfo ii) { // SSS FIXME: So, do we clone the module body scope or not? return new DefineModuleInstr(ii.getRenamedVariable(result), this.newIRModuleBody, container.cloneForInlining(ii)); }
@Override public Instr cloneForInlining(InlinerInfo ii) { // SSS: So, do we clone the meta-class body scope or not? return new DefineMetaClassInstr(ii.getRenamedVariable(result), object.cloneForInlining(ii), metaClassBody); }
@Override public Instr cloneForInlining(InlinerInfo ii) { if (ii.canMapArgsStatically()) { // FIXME: Check this return new CopyInstr(ii.getRenamedVariable(result), ii.getArg(argIndex, true)); } else { return new RestArgMultipleAsgnInstr(ii.getRenamedVariable(result), ii.getArgs(), argIndex, (numUsedArgs - argIndex), argIndex); } }
@Override public Instr cloneForInlinedScope(InlinerInfo ii) { if (ii.canMapArgsStatically()) { return new CopyInstr(ii.getRenamedVariable(result), ii.getArg(argIndex)); } else { return new ReqdArgMultipleAsgnInstr(ii.getRenamedVariable(result), ii.getArgs(), -1, -1, argIndex); } }
@Override public Instr cloneForInlinedScope(InlinerInfo ii) { if (ii.canMapArgsStatically()) { return new CopyInstr(ii.getRenamedVariable(result), ii.getArg(argIndex)); } else { return new ReqdArgMultipleAsgnInstr(ii.getRenamedVariable(result), ii.getArgs(), -1, -1, argIndex); } }
@Override public Instr cloneForInlining(InlinerInfo ii) { // SSS FIXME: So, do we clone the class body scope or not? return new DefineClassInstr(ii.getRenamedVariable(result), this.newIRClassBody, container.cloneForInlining(ii), superClass.cloneForInlining(ii)); }
@Override public Instr cloneForInlinedScope(InlinerInfo ii) { // SSS FIXME: This is not strictly correct -- we have to wrap the block into an // operand type that converts the static code block to a proc which is a closure. if (ii.getCallClosure() instanceof WrappedIRClosure) return NopInstr.NOP; else return new CopyInstr(ii.getRenamedVariable(result), ii.getCallClosure()); }
@Override public Instr cloneForInlinedScope(InlinerInfo ii) { // SSS FIXME: This is not strictly correct -- we have to wrap the block into an // operand type that converts the static code block to a proc which is a closure. if (ii.getCallClosure() instanceof WrappedIRClosure) return NopInstr.NOP; else return new CopyInstr(ii.getRenamedVariable(result), ii.getCallClosure()); }
@Override public Instr cloneForInlining(InlinerInfo ii) { return new RescueEQQInstr(ii.getRenamedVariable(result), arg1.cloneForInlining(ii), arg2.cloneForInlining(ii)); }
@Override public Instr cloneForInlining(InlinerInfo ii) { return new EQQInstr(ii.getRenamedVariable(result), arg1.cloneForInlining(ii), arg2.cloneForInlining(ii)); }
@Override public Instr cloneForInlining(InlinerInfo ii) { return new RescueEQQInstr(ii.getRenamedVariable(result), arg1.cloneForInlining(ii), arg2.cloneForInlining(ii)); }
@Override public Instr cloneForInlining(InlinerInfo ii) { // SSS FIXME: array of args cloning should be part of utility class Operand[] clonedArgs = new Operand[args.length]; for (int i = 0; i < args.length; i++) { clonedArgs[i] = args[i].cloneForInlining(ii); } Variable var = getResult(); return new RuntimeHelperCall(var == null ? null : ii.getRenamedVariable(var), helperMethod, clonedArgs); }
@Override public Instr cloneForInlining(InlinerInfo ii) { return new EQQInstr(ii.getRenamedVariable(result), arg1.cloneForInlining(ii), arg2.cloneForInlining(ii)); }
@Override public Instr cloneForInlining(InlinerInfo ii) { return new GetFieldInstr(ii.getRenamedVariable(getResult()), getSource().cloneForInlining(ii), getRef()); }
@Override public Instr cloneForInlining(InlinerInfo ii) { return new CallInstr(getCallType(), ii.getRenamedVariable(result), (MethAddr) getMethodAddr().cloneForInlining(ii), receiver.cloneForInlining(ii), cloneCallArgs(ii), closure == null ? null : closure.cloneForInlining(ii)); }
@Override public Instr cloneForInlining(InlinerInfo ii) { return new InstanceSuperInstr(ii.getRenamedVariable(getResult()), getDefiningModule().cloneForInlining(ii), (MethAddr)getMethodAddr().cloneForInlining(ii), cloneCallArgs(ii), closure == null ? null : closure.cloneForInlining(ii)); }