< prev index next >
src/hotspot/share/gc/serial/defNewGeneration.cpp
Print this page
@@ -90,12 +90,12 @@
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) :
+ DefNewScanClosure* cur,
+ DefNewYoungerGenClosure* older) :
_heap(heap), _scan_cur_or_nonheap(cur), _scan_older(older)
{
}
void DefNewGeneration::FastEvacuateFollowersClosure::do_void() {
@@ -103,16 +103,10 @@
_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(),
@@ -568,20 +562,20 @@
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);
+ DefNewScanClosure scan_closure(this);
+ DefNewYoungerGenClosure younger_gen_closure(this, _old_gen);
- CLDScanClosure cld_scan_closure(&fsc_with_no_gc_barrier,
+ CLDScanClosure cld_scan_closure(&scan_closure,
heap->rem_set()->cld_rem_set()->accumulate_modified_oops());
- set_promo_failure_scan_stack_closure(&fsc_with_no_gc_barrier);
+ set_promo_failure_scan_stack_closure(&scan_closure);
FastEvacuateFollowersClosure evacuate_followers(heap,
- &fsc_with_no_gc_barrier,
- &fsc_with_gc_barrier);
+ &scan_closure,
+ &younger_gen_closure);
assert(heap->no_allocs_since_save_marks(),
"save marks have not been newly set.");
{
@@ -589,12 +583,12 @@
// 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,
+ &scan_closure,
+ &younger_gen_closure,
&cld_scan_closure);
}
// "evacuate followers".
evacuate_followers.do_void();
< prev index next >