hotspot/src/share/vm/gc_implementation/g1/heapRegionSet.cpp
changeset 8927 461fa7ee5254
parent 8680 f1c414e16a4c
child 10996 b9d07748e5b3
equal deleted inserted replaced
8926:717a49db1743 8927:461fa7ee5254
   259 
   259 
   260 void HeapRegionLinkedList::fill_in_ext_msg_extra(hrs_ext_msg* msg) {
   260 void HeapRegionLinkedList::fill_in_ext_msg_extra(hrs_ext_msg* msg) {
   261   msg->append(" hd: "PTR_FORMAT" tl: "PTR_FORMAT, head(), tail());
   261   msg->append(" hd: "PTR_FORMAT" tl: "PTR_FORMAT, head(), tail());
   262 }
   262 }
   263 
   263 
       
   264 void HeapRegionLinkedList::add_as_head(HeapRegionLinkedList* from_list) {
       
   265   hrs_assert_mt_safety_ok(this);
       
   266   hrs_assert_mt_safety_ok(from_list);
       
   267 
       
   268   verify_optional();
       
   269   from_list->verify_optional();
       
   270 
       
   271   if (from_list->is_empty()) return;
       
   272 
       
   273 #ifdef ASSERT
       
   274   HeapRegionLinkedListIterator iter(from_list);
       
   275   while (iter.more_available()) {
       
   276     HeapRegion* hr = iter.get_next();
       
   277     // In set_containing_set() we check that we either set the value
       
   278     // from NULL to non-NULL or vice versa to catch bugs. So, we have
       
   279     // to NULL it first before setting it to the value.
       
   280     hr->set_containing_set(NULL);
       
   281     hr->set_containing_set(this);
       
   282   }
       
   283 #endif // ASSERT
       
   284 
       
   285   if (_head != NULL) {
       
   286     assert(length() >  0 && _tail != NULL, hrs_ext_msg(this, "invariant"));
       
   287     from_list->_tail->set_next(_head);
       
   288   } else {
       
   289     assert(length() == 0 && _head == NULL, hrs_ext_msg(this, "invariant"));
       
   290     _tail = from_list->_tail;
       
   291   }
       
   292   _head = from_list->_head;
       
   293 
       
   294   _length           += from_list->length();
       
   295   _region_num       += from_list->region_num();
       
   296   _total_used_bytes += from_list->total_used_bytes();
       
   297   from_list->clear();
       
   298 
       
   299   verify_optional();
       
   300   from_list->verify_optional();
       
   301 }
       
   302 
   264 void HeapRegionLinkedList::add_as_tail(HeapRegionLinkedList* from_list) {
   303 void HeapRegionLinkedList::add_as_tail(HeapRegionLinkedList* from_list) {
   265   hrs_assert_mt_safety_ok(this);
   304   hrs_assert_mt_safety_ok(this);
   266   hrs_assert_mt_safety_ok(from_list);
   305   hrs_assert_mt_safety_ok(from_list);
   267 
   306 
   268   verify_optional();
   307   verify_optional();