helper.disableReschedule();
helper.stopThreadsAtSafePoint();
    final void gc() {        // Prepare        final VmBootHeap bootHeap = heapManager.getBootHeap();        final VmAbstractHeap firstHeap = heapManager.getFirstHeap();        stats.lastGCTime = System.currentTimeMillis();        // Mark        helper.disableReschedule();        heapManager.setGcActive(true);        try {            Unsafe.debug("<mark/>");            wb.setActive(true);            markHeap(bootHeap, firstHeap);            wb.setActive(false);            // 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.enableReschedule();        }        Unsafe.debug("</gc free=");        Unsafe.debug(heapManager.getFreeMemory());        Unsafe.debug("/>");                if (debug) {             System.out.println(stats);        }             }