using Cosmos.Core.Common; using Cosmos.IL2CPU; using Cosmos.IL2CPU.Plugs; namespace Cosmos.Core.Plugs.System { [Plug(Target = typeof(object))] public class ObjectImpl { public static unsafe ulong MemberwiseClone([ObjectPointerAccess] uint aThis) { var xThisPointer = (uint*) aThis; var xSize = ObjectUtilities.FieldDataOffset + xThisPointer[2]; var xResult = GCImplementation.AllocNewObject(xSize); var xThisPointerByte = (byte*) xThisPointer; var xThatPointerByte = (byte*) xResult; for (int i = 0; i < xSize; i++) { xThatPointerByte[i] = xThisPointerByte[i]; } ulong xReturn = ((ulong) xResult) << (sizeof(ulong) / 2 * 8); return xReturn; } } }