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); } }