// // scan_marked_blocks // // scans all the blocks in _tlcBuffer // void ThreadLocalCollector::scan_marked_blocks() { size_t index = 0; while (index < _tlcBufferCount) { void *block = _tlcBuffer[index++]; Subzone *subzone = Subzone::subzone(block); usword_t q = subzone->quantum_index_unchecked(block); if (subzone->should_scan_local_block(q)) { scan_local_block(subzone, q, block); } } }
// // scan_marked_blocks // void ThreadLocalCollector::scan_marked_blocks() { for (uint32_t i = _localBlocks.firstOccupiedSlot(), last = _localBlocks.lastOccupiedSlot(); i <= last; i++) { void *block = _localBlocks.markedUnscannedPointerAtIndex(i); if (block) { Subzone *subzone = Subzone::subzone(block); if (subzone->should_scan_local_block(block)) { scan_local_block(block); } } } }