2005-01-29 Miguel de Icaza <miguel@novell.com>
+ * pending.cs: Produce better code (no nops produced by using Ldarg
+ + value).
+
* pending.cs (PendingImplementation.DefineProxy): It was not `arg
i - 1' it should be arg + 1.
int top = args.Length;
ILGenerator ig = proxy.GetILGenerator ();
- ig.Emit (OpCodes.Ldarg_0);
- for (int i = 0; i < top; i++){
- switch (i){
- case 0:
- ig.Emit (OpCodes.Ldarg_1); break;
- case 1:
- ig.Emit (OpCodes.Ldarg_2); break;
- case 2:
- ig.Emit (OpCodes.Ldarg_3); break;
- default:
- ig.Emit (OpCodes.Ldarg, i + 1); break;
- }
- }
+ for (int i = 0; i <= top; i++)
+ ParameterReference.EmitLdArg (ig, i);
+
ig.Emit (OpCodes.Call, base_method);
ig.Emit (OpCodes.Ret);