public void InitHeap() { #if PROCESS_TRACE BasicConsole.WriteLine(" > Initialising process heap..."); if (FOS_System.GC.State != null) { BasicConsole.WriteLine(" > !! GC State not null!"); } else { BasicConsole.WriteLine(" > GC State null as expected."); } BasicConsole.WriteLine(" >> Creating heap lock..."); #endif HeapLock = new SpinLock(); #if PROCESS_TRACE BasicConsole.WriteLine(" >> Setting heap lock..."); #endif FOS_System.Heap.AccessLock = HeapLock; #if PROCESS_TRACE BasicConsole.WriteLine(" >> Setting heap lock initialised..."); #endif FOS_System.Heap.AccessLockInitialised = true; #if PROCESS_TRACE BasicConsole.WriteLine(" >> Creating new GC state..."); #endif TheGCState = new FOS_System.GCState(); if ((uint)TheGCState.CleanupList == 0xFFFFFFFF) { BasicConsole.WriteLine(" !!! PANIC !!! "); BasicConsole.WriteLine(" GC.state.CleanupList is 0xFFFFFFFF NOT null!"); BasicConsole.WriteLine(" !-!-!-!-!-!-! "); } #if PROCESS_TRACE BasicConsole.WriteLine(" >> Creating new GC lock..."); #endif TheGCState.AccessLock = new SpinLock(); #if PROCESS_TRACE BasicConsole.WriteLine(" >> Setting GC lock initialised..."); #endif TheGCState.AccessLockInitialised = true; #if PROCESS_TRACE BasicConsole.WriteLine(" >> Setting GC state..."); #endif FOS_System.GC.State = TheGCState; #if PROCESS_TRACE BasicConsole.WriteLine(" >> Done."); #endif }