public void EmitIR(CILEmitter Emitter, bool Reference) { if (Reference) { throw new InvalidByReferenceException(); } for (int i = 0; i < arguments.Count; i++) { IExpression expr = arguments.Expression(i); bool loadReference = ToCall.Parameters.At(i).IsReference; expr.EmitIR(Emitter, loadReference); } foreach (Variable prevVar in ToCall.Parameters.PreviousVariables) { if (current.Variable(prevVar.Identifier).IsReference) { Emitter.LoadVariable(prevVar.Identifier); } else { Emitter.LoadVariableAddress(prevVar.Identifier); } } Emitter.Call(toBeCalled); }