comparison src/share/vm/gc_implementation/g1/concurrentG1Refine.cpp @ 1246:deada8912c54

6914402: G1: assert(!is_young_card(cached_ptr),"shouldn't get a card in young region") Summary: Invalid assert. Filter cards evicted from the card count cache instead. Reviewed-by: apetrusenko, tonyp
author johnc
date Tue, 02 Feb 2010 18:39:50 -0800
parents 44f61c24ddab
children b81f3572f355
comparison
equal deleted inserted replaced
1245:6484c4ee11cb 1246:deada8912c54
298 298
299 jbyte* ConcurrentG1Refine::cache_insert(jbyte* card_ptr, bool* defer) { 299 jbyte* ConcurrentG1Refine::cache_insert(jbyte* card_ptr, bool* defer) {
300 int count; 300 int count;
301 jbyte* cached_ptr = add_card_count(card_ptr, &count, defer); 301 jbyte* cached_ptr = add_card_count(card_ptr, &count, defer);
302 assert(cached_ptr != NULL, "bad cached card ptr"); 302 assert(cached_ptr != NULL, "bad cached card ptr");
303 assert(!is_young_card(cached_ptr), "shouldn't get a card in young region"); 303
304 if (is_young_card(cached_ptr)) {
305 // The region containing cached_ptr has been freed during a clean up
306 // pause, reallocated, and tagged as young.
307 assert(cached_ptr != card_ptr, "shouldn't be");
308
309 // We've just inserted a new old-gen card pointer into the card count
310 // cache and evicted the previous contents of that count slot.
311 // The evicted card pointer has been determined to be in a young region
312 // and so cannot be the newly inserted card pointer (that will be
313 // in an old region).
314 // The count for newly inserted card will be set to zero during the
315 // insertion, so we don't want to defer the cleaning of the newly
316 // inserted card pointer.
317 assert(*defer == false, "deferring non-hot card");
318 return NULL;
319 }
304 320
305 // The card pointer we obtained from card count cache is not hot 321 // The card pointer we obtained from card count cache is not hot
306 // so do not store it in the cache; return it for immediate 322 // so do not store it in the cache; return it for immediate
307 // refining. 323 // refining.
308 if (count < G1ConcRSHotCardLimit) { 324 if (count < G1ConcRSHotCardLimit) {