vm: verify code heap's all_blocks set when DEBUG
parent
c2c2023e34
commit
15c4b7aa57
|
@ -72,8 +72,31 @@ void code_heap::flush_icache()
|
||||||
factor::flush_icache(seg->start,seg->size);
|
factor::flush_icache(seg->start,seg->size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct all_blocks_set_verifier {
|
||||||
|
std::set<code_block*> *leftovers;
|
||||||
|
|
||||||
|
all_blocks_set_verifier(std::set<code_block*> *leftovers) : leftovers(leftovers) {}
|
||||||
|
|
||||||
|
void operator()(code_block *block, cell size)
|
||||||
|
{
|
||||||
|
FACTOR_ASSERT(leftovers->find(block) != leftovers->end());
|
||||||
|
leftovers->erase(block);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
void code_heap::verify_all_blocks_set()
|
||||||
|
{
|
||||||
|
std::set<code_block*> leftovers = all_blocks;
|
||||||
|
all_blocks_set_verifier verifier(&leftovers);
|
||||||
|
allocator->iterate(verifier);
|
||||||
|
FACTOR_ASSERT(leftovers.empty());
|
||||||
|
}
|
||||||
|
|
||||||
code_block *code_heap::code_block_for_address(cell address)
|
code_block *code_heap::code_block_for_address(cell address)
|
||||||
{
|
{
|
||||||
|
#ifdef FACTOR_DEBUG
|
||||||
|
verify_all_blocks_set();
|
||||||
|
#endif
|
||||||
std::set<code_block*>::const_iterator blocki =
|
std::set<code_block*>::const_iterator blocki =
|
||||||
all_blocks.upper_bound((code_block*)address);
|
all_blocks.upper_bound((code_block*)address);
|
||||||
FACTOR_ASSERT(blocki != all_blocks.begin());
|
FACTOR_ASSERT(blocki != all_blocks.begin());
|
||||||
|
|
|
@ -47,6 +47,7 @@ struct code_heap {
|
||||||
void flush_icache();
|
void flush_icache();
|
||||||
void guard_safepoint();
|
void guard_safepoint();
|
||||||
void unguard_safepoint();
|
void unguard_safepoint();
|
||||||
|
void verify_all_blocks_set();
|
||||||
void initialize_all_blocks_set();
|
void initialize_all_blocks_set();
|
||||||
void update_all_blocks_set(mark_bits<code_block> *code_forwarding_map);
|
void update_all_blocks_set(mark_bits<code_block> *code_forwarding_map);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue