Unsafe.debug("<mark/>");
if (verbose) { Unsafe.debug("<mark/>"); }
    final void gc() {        // Prepare        final VmBootHeap bootHeap = heapManager.getBootHeap();        final VmAbstractHeap firstHeap = heapManager.getFirstHeap();        stats.lastGCTime = System.currentTimeMillis();        final boolean locking = (writeBarrier != null);        helper.stopThreadsAtSafePoint();        heapManager.setGcActive(true);        try {            // Mark            //helper.stopThreadsAtSafePoint();            //heapManager.setGcActive(true);            try {                Unsafe.debug("<mark/>");                markHeap(bootHeap, firstHeap, locking);            } finally {                //heapManager.setGcActive(false);                //helper.restartThreads();            }            // Sweep            Unsafe.debug("<sweep/>");            sweep(firstHeap);            // Cleanup            Unsafe.debug("<cleanup/>");            cleanup(bootHeap, firstHeap);            // Verification            if (debug) {                Unsafe.debug("<verify/>");                verify(bootHeap, firstHeap);            }        } finally {            heapManager.setGcActive(false);            heapManager.resetCurrentHeap();            helper.restartThreads();        }        // Start the finalization process        heapManager.triggerFinalization();        Unsafe.debug("</gc free=");        Unsafe.debug(heapManager.getFreeMemory());        Unsafe.debug("/>");        if (debug) {            System.out.println(stats);        }    }