Mercurial > hg > graal-jvmci-8
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) { |