# HG changeset patch # User jcoomes # Date 1244752261 25200 # Node ID 6e2afda171dbf0cc09187a88cc7c58f9ce917c56 # Parent 353ba45755812c369fc208b89af5568530a86513 6849716: BitMap - performance regression introduced with G1 Summary: make verification code visible only in debug builds Reviewed-by: iveresov, ysr, johnc, apetrusenko, tonyp diff -r 353ba4575581 -r 6e2afda171db src/share/vm/includeDB_compiler1 --- a/src/share/vm/includeDB_compiler1 Sun Jun 07 22:08:24 2009 -0700 +++ b/src/share/vm/includeDB_compiler1 Thu Jun 11 13:31:01 2009 -0700 @@ -387,7 +387,7 @@ c1_ValueSet.cpp c1_ValueSet.hpp c1_ValueSet.hpp allocation.hpp -c1_ValueSet.hpp bitMap.hpp +c1_ValueSet.hpp bitMap.inline.hpp c1_ValueSet.hpp c1_Instruction.hpp c1_ValueStack.cpp c1_IR.hpp diff -r 353ba4575581 -r 6e2afda171db src/share/vm/utilities/bitMap.cpp --- a/src/share/vm/utilities/bitMap.cpp Sun Jun 07 22:08:24 2009 -0700 +++ b/src/share/vm/utilities/bitMap.cpp Thu Jun 11 13:31:01 2009 -0700 @@ -41,19 +41,6 @@ resize(size_in_bits, in_resource_area); } - -void BitMap::verify_index(idx_t index) const { - assert(index < _size, "BitMap index out of bounds"); -} - -void BitMap::verify_range(idx_t beg_index, idx_t end_index) const { -#ifdef ASSERT - assert(beg_index <= end_index, "BitMap range error"); - // Note that [0,0) and [size,size) are both valid ranges. - if (end_index != _size) verify_index(end_index); -#endif -} - void BitMap::resize(idx_t size_in_bits, bool in_resource_area) { assert(size_in_bits >= 0, "just checking"); idx_t old_size_in_words = size_in_words(); diff -r 353ba4575581 -r 6e2afda171db src/share/vm/utilities/bitMap.hpp --- a/src/share/vm/utilities/bitMap.hpp Sun Jun 07 22:08:24 2009 -0700 +++ b/src/share/vm/utilities/bitMap.hpp Thu Jun 11 13:31:01 2009 -0700 @@ -93,10 +93,12 @@ // The index of the first full word in a range. idx_t word_index_round_up(idx_t bit) const; - // Verification, statistics. - void verify_index(idx_t index) const; - void verify_range(idx_t beg_index, idx_t end_index) const; + // Verification. + inline void verify_index(idx_t index) const NOT_DEBUG_RETURN; + inline void verify_range(idx_t beg_index, idx_t end_index) const + NOT_DEBUG_RETURN; + // Statistics. static idx_t* _pop_count_table; static void init_pop_count_table(); static idx_t num_set_bits(bm_word_t w); @@ -287,7 +289,6 @@ #endif }; - // Convenience class wrapping BitMap which provides multiple bits per slot. class BitMap2D VALUE_OBJ_CLASS_SPEC { public: diff -r 353ba4575581 -r 6e2afda171db src/share/vm/utilities/bitMap.inline.hpp --- a/src/share/vm/utilities/bitMap.inline.hpp Sun Jun 07 22:08:24 2009 -0700 +++ b/src/share/vm/utilities/bitMap.inline.hpp Thu Jun 11 13:31:01 2009 -0700 @@ -22,6 +22,17 @@ * */ +#ifdef ASSERT +inline void BitMap::verify_index(idx_t index) const { + assert(index < _size, "BitMap index out of bounds"); +} + +inline void BitMap::verify_range(idx_t beg_index, idx_t end_index) const { + assert(beg_index <= end_index, "BitMap range error"); + // Note that [0,0) and [size,size) are both valid ranges. + if (end_index != _size) verify_index(end_index); +} +#endif // #ifdef ASSERT inline void BitMap::set_bit(idx_t bit) { verify_index(bit); diff -r 353ba4575581 -r 6e2afda171db src/share/vm/utilities/macros.hpp --- a/src/share/vm/utilities/macros.hpp Sun Jun 07 22:08:24 2009 -0700 +++ b/src/share/vm/utilities/macros.hpp Thu Jun 11 13:31:01 2009 -0700 @@ -106,11 +106,13 @@ #ifdef ASSERT #define DEBUG_ONLY(code) code #define NOT_DEBUG(code) +#define NOT_DEBUG_RETURN /*next token must be ;*/ // Historical. #define debug_only(code) code #else // ASSERT #define DEBUG_ONLY(code) #define NOT_DEBUG(code) code +#define NOT_DEBUG_RETURN {} #define debug_only(code) #endif // ASSERT