comparison src/share/vm/gc_implementation/parNew/parCardTableModRefBS.cpp @ 3359:7d64aa23eb96

7043891: CMS: assert(_whole_heap.contains(p)) failed: out of bounds access to card marking array Summary: Fixed assertion checking code that was attempting to translate addresses past end of space for card-table slot. Also elaborated some assertion checking messages. Reviewed-by: iveresov, jmasa, tonyp
author ysr
date Wed, 11 May 2011 15:47:12 -0700
parents fc2b798ab316
children fe189d4a44e9 5c0a3c1858b1
comparison
equal deleted inserted replaced
3358:97b64f73103b 3359:7d64aa23eb96
349 // will have been logged in the LNC for that chunk. 349 // will have been logged in the LNC for that chunk.
350 // We need to examine as many chunks to the right as this object 350 // We need to examine as many chunks to the right as this object
351 // covers. 351 // covers.
352 const uintptr_t last_chunk_index_to_check = addr_to_chunk_index(last_block + last_block_size - 1) 352 const uintptr_t last_chunk_index_to_check = addr_to_chunk_index(last_block + last_block_size - 1)
353 - lowest_non_clean_base_chunk_index; 353 - lowest_non_clean_base_chunk_index;
354 DEBUG_ONLY(const uintptr_t last_chunk_index = addr_to_chunk_index(used.end()) 354 DEBUG_ONLY(const uintptr_t last_chunk_index = addr_to_chunk_index(used.last())
355 - lowest_non_clean_base_chunk_index;) 355 - lowest_non_clean_base_chunk_index;)
356 assert(last_chunk_index_to_check <= last_chunk_index, 356 assert(last_chunk_index_to_check <= last_chunk_index,
357 err_msg("Out of bounds: last_chunk_index_to_check " INTPTR_FORMAT 357 err_msg("Out of bounds: last_chunk_index_to_check " INTPTR_FORMAT
358 " exceeds last_chunk_index " INTPTR_FORMAT, 358 " exceeds last_chunk_index " INTPTR_FORMAT,
359 last_chunk_index_to_check, last_chunk_index)); 359 last_chunk_index_to_check, last_chunk_index));