Esempio n. 1
0
 internal static void LoadPackedArg(CodeEmitter ilgen, int index, int firstArg, int packedArgPos, Type packedArgType)
 {
     index += firstArg;
     if (index >= packedArgPos)
     {
         ilgen.EmitLdarga(packedArgPos);
         int  fieldPos = index - 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(index);
     }
 }
Esempio n. 2
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);
     }
 }
Esempio n. 3
0
 internal override void Generate(CodeGenContext context, CodeEmitter ilgen)
 {
     ilgen.EmitLdarga(ArgNum);
 }
Esempio n. 4
0
 internal void LoadFirstArgAddress()
 {
     ilgen.EmitLdarga(firstArg);
 }