Exemplo n.º 1
0
 internal void Ldarg(int i)
 {
     i += firstArg;
     if (i >= packedArgPos)
     {
         ilgen.EmitLdarga(packedArgPos);
         int  fieldPos = i - packedArgPos;
         Type type     = packedArgType;
         while (fieldPos >= MaxArity || (fieldPos == MaxArity - 1 && IsPackedArgsContainer(type.GetField("t8").FieldType)))
         {
             FieldInfo field = type.GetField("t8");
             type = field.FieldType;
             ilgen.Emit(OpCodes.Ldflda, field);
             fieldPos -= MaxArity - 1;
         }
         ilgen.Emit(OpCodes.Ldfld, type.GetField("t" + (1 + fieldPos)));
     }
     else
     {
         ilgen.EmitLdarg(i);
     }
 }