//
 // 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);
         }
     }
 }
Exemplo n.º 2
0
 //
 // 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);
             }
         }
     }
 }