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

changeset 1546
44f61c24ddab
parent 1527
ed52bcc32739
child 1601
7b0e9cba0307
     1.1 --- a/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Fri Dec 11 09:30:48 2009 -0800
     1.2 +++ b/src/share/vm/gc_implementation/g1/g1CollectedHeap.cpp	Wed Dec 16 15:12:51 2009 -0800
     1.3 @@ -1375,6 +1375,7 @@
     1.4  G1CollectedHeap::G1CollectedHeap(G1CollectorPolicy* policy_) :
     1.5    SharedHeap(policy_),
     1.6    _g1_policy(policy_),
     1.7 +  _dirty_card_queue_set(false),
     1.8    _ref_processor(NULL),
     1.9    _process_strong_tasks(new SubTasksDone(G1H_PS_NumElements)),
    1.10    _bot_shared(NULL),
    1.11 @@ -1460,8 +1461,6 @@
    1.12    Universe::check_alignment(init_byte_size, HeapRegion::GrainBytes, "g1 heap");
    1.13    Universe::check_alignment(max_byte_size, HeapRegion::GrainBytes, "g1 heap");
    1.14  
    1.15 -  // We allocate this in any case, but only do no work if the command line
    1.16 -  // param is off.
    1.17    _cg1r = new ConcurrentG1Refine();
    1.18  
    1.19    // Reserve the maximum.
    1.20 @@ -1594,18 +1593,20 @@
    1.21  
    1.22    JavaThread::satb_mark_queue_set().initialize(SATB_Q_CBL_mon,
    1.23                                                 SATB_Q_FL_lock,
    1.24 -                                               0,
    1.25 +                                               G1SATBProcessCompletedThreshold,
    1.26                                                 Shared_SATB_Q_lock);
    1.27  
    1.28    JavaThread::dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon,
    1.29                                                  DirtyCardQ_FL_lock,
    1.30 -                                                G1UpdateBufferQueueMaxLength,
    1.31 +                                                concurrent_g1_refine()->yellow_zone(),
    1.32 +                                                concurrent_g1_refine()->red_zone(),
    1.33                                                  Shared_DirtyCardQ_lock);
    1.34  
    1.35    if (G1DeferredRSUpdate) {
    1.36      dirty_card_queue_set().initialize(DirtyCardQ_CBL_mon,
    1.37                                        DirtyCardQ_FL_lock,
    1.38 -                                      0,
    1.39 +                                      -1, // never trigger processing
    1.40 +                                      -1, // no limit on length
    1.41                                        Shared_DirtyCardQ_lock,
    1.42                                        &JavaThread::dirty_card_queue_set());
    1.43    }
    1.44 @@ -4239,10 +4240,11 @@
    1.45      RedirtyLoggedCardTableEntryFastClosure redirty;
    1.46      dirty_card_queue_set().set_closure(&redirty);
    1.47      dirty_card_queue_set().apply_closure_to_all_completed_buffers();
    1.48 -    JavaThread::dirty_card_queue_set().merge_bufferlists(&dirty_card_queue_set());
    1.49 +
    1.50 +    DirtyCardQueueSet& dcq = JavaThread::dirty_card_queue_set();
    1.51 +    dcq.merge_bufferlists(&dirty_card_queue_set());
    1.52      assert(dirty_card_queue_set().completed_buffers_num() == 0, "All should be consumed");
    1.53    }
    1.54 -
    1.55    COMPILER2_PRESENT(DerivedPointerTable::update_pointers());
    1.56  }
    1.57  

mercurial