< prev index next >
src/hotspot/share/gc/serial/defNewGeneration.cpp
Print this page
*** 90,101 ****
void DefNewGeneration::FastKeepAliveClosure::do_oop(oop* p) { DefNewGeneration::FastKeepAliveClosure::do_oop_work(p); }
void DefNewGeneration::FastKeepAliveClosure::do_oop(narrowOop* p) { DefNewGeneration::FastKeepAliveClosure::do_oop_work(p); }
DefNewGeneration::FastEvacuateFollowersClosure::
FastEvacuateFollowersClosure(SerialHeap* heap,
! FastScanClosure* cur,
! FastScanClosure* older) :
_heap(heap), _scan_cur_or_nonheap(cur), _scan_older(older)
{
}
void DefNewGeneration::FastEvacuateFollowersClosure::do_void() {
--- 90,101 ----
void DefNewGeneration::FastKeepAliveClosure::do_oop(oop* p) { DefNewGeneration::FastKeepAliveClosure::do_oop_work(p); }
void DefNewGeneration::FastKeepAliveClosure::do_oop(narrowOop* p) { DefNewGeneration::FastKeepAliveClosure::do_oop_work(p); }
DefNewGeneration::FastEvacuateFollowersClosure::
FastEvacuateFollowersClosure(SerialHeap* heap,
! DefNewScanClosure* cur,
! DefNewYoungerGenClosure* older) :
_heap(heap), _scan_cur_or_nonheap(cur), _scan_older(older)
{
}
void DefNewGeneration::FastEvacuateFollowersClosure::do_void() {
*** 103,118 ****
_heap->oop_since_save_marks_iterate(_scan_cur_or_nonheap, _scan_older);
} while (!_heap->no_allocs_since_save_marks());
guarantee(_heap->young_gen()->promo_failure_scan_is_complete(), "Failed to finish scan");
}
- FastScanClosure::FastScanClosure(DefNewGeneration* g, bool gc_barrier) :
- OopsInClassLoaderDataOrGenClosure(g), _g(g), _gc_barrier(gc_barrier)
- {
- _boundary = _g->reserved().end();
- }
-
void CLDScanClosure::do_cld(ClassLoaderData* cld) {
NOT_PRODUCT(ResourceMark rm);
log_develop_trace(gc, scavenge)("CLDScanClosure::do_cld " PTR_FORMAT ", %s, dirty: %s",
p2i(cld),
cld->loader_name_and_id(),
--- 103,112 ----
*** 568,587 ****
heap->rem_set()->prepare_for_younger_refs_iterate(false);
assert(heap->no_allocs_since_save_marks(),
"save marks have not been newly set.");
! FastScanClosure fsc_with_no_gc_barrier(this, false);
! FastScanClosure fsc_with_gc_barrier(this, true);
! CLDScanClosure cld_scan_closure(&fsc_with_no_gc_barrier,
heap->rem_set()->cld_rem_set()->accumulate_modified_oops());
! set_promo_failure_scan_stack_closure(&fsc_with_no_gc_barrier);
FastEvacuateFollowersClosure evacuate_followers(heap,
! &fsc_with_no_gc_barrier,
! &fsc_with_gc_barrier);
assert(heap->no_allocs_since_save_marks(),
"save marks have not been newly set.");
{
--- 562,581 ----
heap->rem_set()->prepare_for_younger_refs_iterate(false);
assert(heap->no_allocs_since_save_marks(),
"save marks have not been newly set.");
! DefNewScanClosure scan_closure(this);
! DefNewYoungerGenClosure younger_gen_closure(this, _old_gen);
! CLDScanClosure cld_scan_closure(&scan_closure,
heap->rem_set()->cld_rem_set()->accumulate_modified_oops());
! set_promo_failure_scan_stack_closure(&scan_closure);
FastEvacuateFollowersClosure evacuate_followers(heap,
! &scan_closure,
! &younger_gen_closure);
assert(heap->no_allocs_since_save_marks(),
"save marks have not been newly set.");
{
*** 589,600 ****
// version of the card table scanning code is used.
// See: CardTableRS::non_clean_card_iterate_possibly_parallel.
StrongRootsScope srs(0);
heap->young_process_roots(&srs,
! &fsc_with_no_gc_barrier,
! &fsc_with_gc_barrier,
&cld_scan_closure);
}
// "evacuate followers".
evacuate_followers.do_void();
--- 583,594 ----
// version of the card table scanning code is used.
// See: CardTableRS::non_clean_card_iterate_possibly_parallel.
StrongRootsScope srs(0);
heap->young_process_roots(&srs,
! &scan_closure,
! &younger_gen_closure,
&cld_scan_closure);
}
// "evacuate followers".
evacuate_followers.do_void();
< prev index next >