src/share/vm/gc_implementation/g1/g1SATBCardTableModRefBS.cpp

Print this page
rev 5363 : imported patch filtering.diff
rev 5365 : [mq]: invalidate-fix

*** 159,176 **** while (byte <= last_byte) { *byte = dirty_card; byte++; } } else { // Enqueue if necessary. if (thr->is_Java_thread()) { JavaThread* jt = (JavaThread*)thr; for (; byte <= last_byte; byte++) { if (*byte == g1_young_gen) { continue; } - OrderAccess::storeload(); if (*byte != dirty_card) { *byte = dirty_card; jt->dirty_card_queue().enqueue(byte); } } --- 159,180 ---- while (byte <= last_byte) { *byte = dirty_card; byte++; } } else { + // skip all consecutive young cards + for (; byte <= last_byte && *byte == g1_young_gen; byte++); + + if (byte <= last_byte) { + OrderAccess::storeload(); // Enqueue if necessary. if (thr->is_Java_thread()) { JavaThread* jt = (JavaThread*)thr; for (; byte <= last_byte; byte++) { if (*byte == g1_young_gen) { continue; } if (*byte != dirty_card) { *byte = dirty_card; jt->dirty_card_queue().enqueue(byte); } }
*** 179,192 **** Mutex::_no_safepoint_check_flag); for (; byte <= last_byte; byte++) { if (*byte == g1_young_gen) { continue; } - OrderAccess::storeload(); if (*byte != dirty_card) { *byte = dirty_card; _dcqs.shared_dirty_card_queue()->enqueue(byte); } } } } } --- 183,196 ---- Mutex::_no_safepoint_check_flag); for (; byte <= last_byte; byte++) { if (*byte == g1_young_gen) { continue; } if (*byte != dirty_card) { *byte = dirty_card; _dcqs.shared_dirty_card_queue()->enqueue(byte); } } } } + } }