void code_heap::sweep() { clear_free_blocks_from_all_blocks_iterator clearer(this); allocator->sweep(clearer); #ifdef FACTOR_DEBUG verify_all_blocks_set(); #endif }
void code_heap::initialize_all_blocks_set() { all_blocks.clear(); all_blocks_set_inserter inserter(this); allocator->iterate(inserter); #ifdef FACTOR_DEBUG verify_all_blocks_set(); #endif }
/* Recomputes the all_blocks set of code blocks */ void code_heap::initialize_all_blocks_set() { all_blocks.clear(); auto all_blocks_set_inserter = [&](code_block* block, cell size) { all_blocks.insert((cell)block); }; allocator->iterate(all_blocks_set_inserter); #ifdef FACTOR_DEBUG verify_all_blocks_set(); #endif }
void code_heap::sweep() { auto clear_free_blocks_from_all_blocks = [&](code_block* block, cell size) { std::set<cell>::iterator erase_from = all_blocks.lower_bound((cell)block); std::set<cell>::iterator erase_to = all_blocks.lower_bound((cell)block + size); all_blocks.erase(erase_from, erase_to); }; allocator->sweep(clear_free_blocks_from_all_blocks); #ifdef FACTOR_DEBUG verify_all_blocks_set(); #endif }