public static object LoadValueTypeFieldValueFromValueType(TypedReference typedReference, int fieldOffset, RuntimeTypeHandle fieldTypeHandle) { Debug.Assert(TypedReference.TargetTypeToken(typedReference).ToEETypePtr().IsValueType); Debug.Assert(fieldTypeHandle.ToEETypePtr().IsValueType); return(RuntimeImports.RhBox(fieldTypeHandle.ToEETypePtr(), ref Unsafe.Add <byte>(ref typedReference.Value, fieldOffset))); }
public static object LoadReferenceTypeFieldValueFromValueType(TypedReference typedReference, int fieldOffset) { Debug.Assert(TypedReference.TargetTypeToken(typedReference).ToEETypePtr().IsValueType); return(Unsafe.As <byte, object>(ref Unsafe.Add <byte>(ref typedReference.Value, fieldOffset))); }
public static void StoreReferenceTypeFieldValueIntoValueType(TypedReference typedReference, int fieldOffset, object fieldValue) { Debug.Assert(TypedReference.TargetTypeToken(typedReference).ToEETypePtr().IsValueType); Unsafe.As <byte, object>(ref Unsafe.Add <byte>(ref typedReference.Value, fieldOffset)) = fieldValue; }
public static void StoreValueTypeFieldValueIntoValueType(TypedReference typedReference, int fieldOffset, object fieldValue, RuntimeTypeHandle fieldTypeHandle) { Debug.Assert(TypedReference.TargetTypeToken(typedReference).ToEETypePtr().IsValueType); RuntimeImports.RhUnbox(fieldValue, ref Unsafe.Add <byte>(ref typedReference.Value, fieldOffset), fieldTypeHandle.ToEETypePtr()); }