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.