< prev index next >

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

Print this page
rev 7903 : imported patch skip_stale

*** 3563,3572 **** --- 3563,3573 ---- #if _MARKING_STATS_ _local_pushes = 0; _local_pops = 0; _local_max_size = 0; _objs_scanned = 0; + _stale_humongous_queue_entries = 0; _global_pushes = 0; _global_pops = 0; _global_max_size = 0; _global_transfers_to = 0; _global_transfers_from = 0;
*** 3816,3829 **** gclog_or_tty->print_cr("[%u] popped "PTR_FORMAT, _worker_id, p2i((void*) obj)); } assert(_g1h->is_in_g1_reserved((HeapWord*) obj), "invariant" ); - assert(!_g1h->is_on_master_free_list( - _g1h->heap_region_containing((HeapWord*) obj)), "invariant"); scan_object(obj); if (_task_queue->size() <= target_size || has_aborted()) { ret = false; } else { ret = _task_queue->pop_local(obj); --- 3817,3834 ---- gclog_or_tty->print_cr("[%u] popped "PTR_FORMAT, _worker_id, p2i((void*) obj)); } assert(_g1h->is_in_g1_reserved((HeapWord*) obj), "invariant" ); + if (is_stale_humongous_queue_entry(obj)) { + statsOnly( ++stale_humongous_queue_entries ); + } else { + assert(!_g1h->is_on_master_free_list( + _g1h->heap_region_containing(obj)), "invariant"); scan_object(obj); + } if (_task_queue->size() <= target_size || has_aborted()) { ret = false; } else { ret = _task_queue->pop_local(obj);
*** 3946,3955 **** --- 3951,3962 ---- _global_transfers_to,_global_transfers_from); gclog_or_tty->print_cr(" Regions: claimed = %d", _regions_claimed); gclog_or_tty->print_cr(" SATB buffers: processed = %d", _satb_buffers_processed); gclog_or_tty->print_cr(" Steals: attempts = %d, successes = %d", _steal_attempts, _steals); + gclog_or_tty->print_cr(" Skipped stale humongous queue entries = %d", + _stale_humongous_queue_entries); gclog_or_tty->print_cr(" Aborted: %d, due to", _aborted); gclog_or_tty->print_cr(" overflow: %d, global abort: %d, yield: %d", _aborted_overflow, _aborted_cm_aborted, _aborted_yield); gclog_or_tty->print_cr(" time out: %d, SATB: %d, termination: %d", _aborted_timed_out, _aborted_satb, _aborted_termination);
*** 4322,4334 **** --- 4329,4345 ---- _worker_id, p2i((void*) obj)); } statsOnly( ++_steals ); + if (is_stale_humongous_queue_entry(obj)) { + statsOnly( ++stale_humongous_queue_entries ); + } else { assert(_nextMarkBitMap->isMarked((HeapWord*) obj), "any stolen object should be marked"); scan_object(obj); + } // And since we're towards the end, let's totally drain the // local queue and global stack. drain_local_queue(false); drain_global_stack(false);
< prev index next >