Ejemplo n.º 1
0
        // call when the heap is inited
        internal static void InitLate()
        {
            if (fDebug)
            {
                VTable.DebugPrint("CoCo: in InitLate\n");
            }
            interlock = new Object();
            MultiUseWord.GetMonitor(interlock);
            MixinThread(Thread.CurrentThread).readyForCoCo = true;

            // REVIEW: this is just offensive
            GCFieldOffset =
                (UIntPtr)Magic.toPointer(ref ThreadHeaderQueue.MixinObject(instance).preHeader.link)
                - Magic.addressOf(instance);
            vtableFieldOffset =
                (UIntPtr)instance.VTableFieldAddr
                - Magic.addressOf(instance);
            instance.InitLateStub();

            inited = true;
        }