From 4bbb2f5b725686cc11eb2c2628ad5574a0364ca3 Mon Sep 17 00:00:00 2001 From: Joe Groff Date: Mon, 12 Dec 2011 19:04:56 -0800 Subject: [PATCH] vm: only verify all_blocks set if it's invalid Verifying on every sample is way too slow to be practical when debugging bootstrap. --- vm/code_heap.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/vm/code_heap.cpp b/vm/code_heap.cpp index 8ac29fd6b5..b7f45a206f 100755 --- a/vm/code_heap.cpp +++ b/vm/code_heap.cpp @@ -94,16 +94,20 @@ void code_heap::verify_all_blocks_set() code_block *code_heap::code_block_for_address(cell address) { -#ifdef FACTOR_DEBUG - verify_all_blocks_set(); -#endif std::set::const_iterator blocki = all_blocks.upper_bound((code_block*)address); FACTOR_ASSERT(blocki != all_blocks.begin()); --blocki; code_block* found_block = *blocki; - FACTOR_ASSERT((cell)found_block->entry_point() <= address - && address - (cell)found_block->entry_point() < found_block->size()); +#ifdef FACTOR_DEBUG + if (!((cell)found_block->entry_point() <= address + && address - (cell)found_block->entry_point() < found_block->size())) + { + std::cerr << "invalid block found in all_blocks set!" << std::endl; + verify_all_blocks_set(); + FACTOR_ASSERT(false); + } +#endif return found_block; }