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(); |