| File: System\Object.NativeAot.cs | Web Access |
| Project: src\runtime\src\coreclr\nativeaot\System.Private.CoreLib\src\System.Private.CoreLib.csproj (System.Private.CoreLib) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Runtime; using System.Runtime.CompilerServices; using Internal.Runtime; namespace System { // CONTRACT with Runtime // The Object type is one of the primitives understood by the compilers and runtime // Data Contract: Single field of type MethodTable* public unsafe partial class Object { // CS0649: Field '{blah}' is never assigned to, and will always have its default value #pragma warning disable 649 [NonSerialized] internal MethodTable* m_pEEType; #pragma warning restore [Intrinsic] public Type GetType() { return Type.GetTypeFromMethodTable(m_pEEType); } [Intrinsic] protected internal unsafe object MemberwiseClone() { object clone = this.GetMethodTable()->IsArray ? RuntimeImports.RhNewVariableSizeObject(this.GetMethodTable(), Unsafe.As<Array>(this).Length) : RuntimeImports.RhNewObject(this.GetMethodTable()); // copy contents of "this" to the clone nuint byteCount = RuntimeHelpers.GetRawObjectDataSize(this); ref byte src = ref this.GetRawData(); ref byte dst = ref clone.GetRawData(); if (this.GetMethodTable()->ContainsGCPointers) Buffer.BulkMoveWithWriteBarrier(ref dst, ref src, byteCount); else SpanHelpers.Memmove(ref dst, ref src, byteCount); return clone; } } }