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

changeset 3175
4dfb2df418f2
parent 2969
6747fd0512e0
child 3268
8aae2050e83e
     1.1 --- a/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Thu Sep 22 07:18:51 2011 -0400
     1.2 +++ b/src/share/vm/gc_implementation/g1/g1MarkSweep.cpp	Thu Sep 22 10:57:37 2011 -0700
     1.3 @@ -62,6 +62,8 @@
     1.4    // hook up weak ref data so it can be used during Mark-Sweep
     1.5    assert(GenMarkSweep::ref_processor() == NULL, "no stomping");
     1.6    assert(rp != NULL, "should be non-NULL");
     1.7 +  assert(rp == G1CollectedHeap::heap()->ref_processor_stw(), "Precondition");
     1.8 +
     1.9    GenMarkSweep::_ref_processor = rp;
    1.10    rp->setup_policy(clear_all_softrefs);
    1.11  
    1.12 @@ -139,6 +141,8 @@
    1.13  
    1.14    // Process reference objects found during marking
    1.15    ReferenceProcessor* rp = GenMarkSweep::ref_processor();
    1.16 +  assert(rp == G1CollectedHeap::heap()->ref_processor_stw(), "Sanity");
    1.17 +
    1.18    rp->setup_policy(clear_all_softrefs);
    1.19    rp->process_discovered_references(&GenMarkSweep::is_alive,
    1.20                                      &GenMarkSweep::keep_alive,
    1.21 @@ -166,7 +170,6 @@
    1.22    GenMarkSweep::follow_mdo_weak_refs();
    1.23    assert(GenMarkSweep::_marking_stack.is_empty(), "just drained");
    1.24  
    1.25 -
    1.26    // Visit interned string tables and delete unmarked oops
    1.27    StringTable::unlink(&GenMarkSweep::is_alive);
    1.28    // Clean up unreferenced symbols in symbol table.
    1.29 @@ -346,7 +349,8 @@
    1.30                             NULL,  // do not touch code cache here
    1.31                             &GenMarkSweep::adjust_pointer_closure);
    1.32  
    1.33 -  g1h->ref_processor()->weak_oops_do(&GenMarkSweep::adjust_root_pointer_closure);
    1.34 +  assert(GenMarkSweep::ref_processor() == g1h->ref_processor_stw(), "Sanity");
    1.35 +  g1h->ref_processor_stw()->weak_oops_do(&GenMarkSweep::adjust_root_pointer_closure);
    1.36  
    1.37    // Now adjust pointers in remaining weak roots.  (All of which should
    1.38    // have been cleared if they pointed to non-surviving objects.)

mercurial