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

changeset 1546
44f61c24ddab
parent 1280
df6caf649ff7
child 1752
d4197f8d516a
     1.1 --- a/src/share/vm/gc_implementation/g1/satbQueue.cpp	Fri Dec 11 09:30:48 2009 -0800
     1.2 +++ b/src/share/vm/gc_implementation/g1/satbQueue.cpp	Wed Dec 16 15:12:51 2009 -0800
     1.3 @@ -67,9 +67,9 @@
     1.4  {}
     1.5  
     1.6  void SATBMarkQueueSet::initialize(Monitor* cbl_mon, Mutex* fl_lock,
     1.7 -                                  int max_completed_queue,
     1.8 +                                  int process_completed_threshold,
     1.9                                    Mutex* lock) {
    1.10 -  PtrQueueSet::initialize(cbl_mon, fl_lock, max_completed_queue);
    1.11 +  PtrQueueSet::initialize(cbl_mon, fl_lock, process_completed_threshold, -1);
    1.12    _shared_satb_queue.set_lock(lock);
    1.13    if (ParallelGCThreads > 0) {
    1.14      _par_closures = NEW_C_HEAP_ARRAY(ObjectClosure*, ParallelGCThreads);
    1.15 @@ -122,12 +122,12 @@
    1.16  
    1.17  bool SATBMarkQueueSet::apply_closure_to_completed_buffer_work(bool par,
    1.18                                                                int worker) {
    1.19 -  CompletedBufferNode* nd = NULL;
    1.20 +  BufferNode* nd = NULL;
    1.21    {
    1.22      MutexLockerEx x(_cbl_mon, Mutex::_no_safepoint_check_flag);
    1.23      if (_completed_buffers_head != NULL) {
    1.24        nd = _completed_buffers_head;
    1.25 -      _completed_buffers_head = nd->next;
    1.26 +      _completed_buffers_head = nd->next();
    1.27        if (_completed_buffers_head == NULL) _completed_buffers_tail = NULL;
    1.28        _n_completed_buffers--;
    1.29        if (_n_completed_buffers == 0) _process_completed = false;
    1.30 @@ -135,9 +135,9 @@
    1.31    }
    1.32    ObjectClosure* cl = (par ? _par_closures[worker] : _closure);
    1.33    if (nd != NULL) {
    1.34 -    ObjPtrQueue::apply_closure_to_buffer(cl, nd->buf, 0, _sz);
    1.35 -    deallocate_buffer(nd->buf);
    1.36 -    delete nd;
    1.37 +    void **buf = BufferNode::make_buffer_from_node(nd);
    1.38 +    ObjPtrQueue::apply_closure_to_buffer(cl, buf, 0, _sz);
    1.39 +    deallocate_buffer(buf);
    1.40      return true;
    1.41    } else {
    1.42      return false;
    1.43 @@ -145,13 +145,13 @@
    1.44  }
    1.45  
    1.46  void SATBMarkQueueSet::abandon_partial_marking() {
    1.47 -  CompletedBufferNode* buffers_to_delete = NULL;
    1.48 +  BufferNode* buffers_to_delete = NULL;
    1.49    {
    1.50      MutexLockerEx x(_cbl_mon, Mutex::_no_safepoint_check_flag);
    1.51      while (_completed_buffers_head != NULL) {
    1.52 -      CompletedBufferNode* nd = _completed_buffers_head;
    1.53 -      _completed_buffers_head = nd->next;
    1.54 -      nd->next = buffers_to_delete;
    1.55 +      BufferNode* nd = _completed_buffers_head;
    1.56 +      _completed_buffers_head = nd->next();
    1.57 +      nd->set_next(buffers_to_delete);
    1.58        buffers_to_delete = nd;
    1.59      }
    1.60      _completed_buffers_tail = NULL;
    1.61 @@ -159,10 +159,9 @@
    1.62      DEBUG_ONLY(assert_completed_buffer_list_len_correct_locked());
    1.63    }
    1.64    while (buffers_to_delete != NULL) {
    1.65 -    CompletedBufferNode* nd = buffers_to_delete;
    1.66 -    buffers_to_delete = nd->next;
    1.67 -    deallocate_buffer(nd->buf);
    1.68 -    delete nd;
    1.69 +    BufferNode* nd = buffers_to_delete;
    1.70 +    buffers_to_delete = nd->next();
    1.71 +    deallocate_buffer(BufferNode::make_buffer_from_node(nd));
    1.72    }
    1.73    assert(SafepointSynchronize::is_at_safepoint(), "Must be at safepoint.");
    1.74    // So we can safely manipulate these queues.

mercurial