internal override void EmitGet(CodeGen g) { g.EmitLdargHelper(index); if (IsReference) { g.EmitLdindHelper(Type); } }
internal override void EmitSet(CodeGen g, Operand value, bool allowExplicitConversion) { if (IsReference) { g.EmitLdargHelper(index); g.EmitStindHelper(Type, value, allowExplicitConversion); } else { g.EmitGetHelper(value, Type, allowExplicitConversion); g.EmitStargHelper(index); } }
internal override void EmitAddressOf(CodeGen g) { if (IsReference) { g.EmitLdargHelper(index); } else { if (index <= byte.MaxValue) { g.il.Emit(OpCodes.Ldarga_S, (byte)index); } else { g.il.Emit(OpCodes.Ldarga, index); } } }