OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_HEAP_SPACES_H_ | 5 #ifndef V8_HEAP_SPACES_H_ |
6 #define V8_HEAP_SPACES_H_ | 6 #define V8_HEAP_SPACES_H_ |
7 | 7 |
8 #include <list> | 8 #include <list> |
9 #include <memory> | 9 #include <memory> |
10 #include <unordered_set> | 10 #include <unordered_set> |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
406 // Checks whether |addr| can be a limit of addresses in this page. It's a | 406 // Checks whether |addr| can be a limit of addresses in this page. It's a |
407 // limit if it's in the page, or if it's just after the last byte of the page. | 407 // limit if it's in the page, or if it's just after the last byte of the page. |
408 bool ContainsLimit(Address addr) { | 408 bool ContainsLimit(Address addr) { |
409 return addr >= area_start() && addr <= area_end(); | 409 return addr >= area_start() && addr <= area_end(); |
410 } | 410 } |
411 | 411 |
412 base::AtomicValue<ConcurrentSweepingState>& concurrent_sweeping_state() { | 412 base::AtomicValue<ConcurrentSweepingState>& concurrent_sweeping_state() { |
413 return concurrent_sweeping_; | 413 return concurrent_sweeping_; |
414 } | 414 } |
415 | 415 |
416 bool SweepingDone() { | |
417 return concurrent_sweeping_state().Value() == kSweepingDone; | |
418 } | |
419 | |
420 // Manage live byte count, i.e., count of bytes in black objects. | 416 // Manage live byte count, i.e., count of bytes in black objects. |
421 inline void ResetLiveBytes(); | 417 inline void ResetLiveBytes(); |
422 inline void IncrementLiveBytes(int by); | 418 inline void IncrementLiveBytes(int by); |
423 | 419 |
424 int LiveBytes() { | 420 int LiveBytes() { |
425 DCHECK_LE(static_cast<unsigned>(live_byte_count_), size_); | 421 DCHECK_LE(static_cast<unsigned>(live_byte_count_), size_); |
426 return live_byte_count_; | 422 return live_byte_count_; |
427 } | 423 } |
428 | 424 |
429 void SetLiveBytes(int live_bytes) { | 425 void SetLiveBytes(int live_bytes) { |
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
764 | 760 |
765 // WaitUntilSweepingCompleted only works when concurrent sweeping is in | 761 // WaitUntilSweepingCompleted only works when concurrent sweeping is in |
766 // progress. In particular, when we know that right before this call a | 762 // progress. In particular, when we know that right before this call a |
767 // sweeper thread was sweeping this page. | 763 // sweeper thread was sweeping this page. |
768 void WaitUntilSweepingCompleted() { | 764 void WaitUntilSweepingCompleted() { |
769 mutex_->Lock(); | 765 mutex_->Lock(); |
770 mutex_->Unlock(); | 766 mutex_->Unlock(); |
771 DCHECK(SweepingDone()); | 767 DCHECK(SweepingDone()); |
772 } | 768 } |
773 | 769 |
| 770 bool SweepingDone() { |
| 771 return concurrent_sweeping_state().Value() == kSweepingDone; |
| 772 } |
| 773 |
774 void ResetFreeListStatistics(); | 774 void ResetFreeListStatistics(); |
775 | 775 |
776 size_t AvailableInFreeList(); | 776 size_t AvailableInFreeList(); |
777 | 777 |
778 size_t LiveBytesFromFreeList() { | 778 size_t LiveBytesFromFreeList() { |
779 DCHECK_GE(area_size(), wasted_memory() + available_in_free_list()); | 779 DCHECK_GE(area_size(), wasted_memory() + available_in_free_list()); |
780 return area_size() - wasted_memory() - available_in_free_list(); | 780 return area_size() - wasted_memory() - available_in_free_list(); |
781 } | 781 } |
782 | 782 |
783 FreeListCategory* free_list_category(FreeListCategoryType type) { | 783 FreeListCategory* free_list_category(FreeListCategoryType type) { |
(...skipping 2149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2933 PageIterator old_iterator_; | 2933 PageIterator old_iterator_; |
2934 PageIterator code_iterator_; | 2934 PageIterator code_iterator_; |
2935 PageIterator map_iterator_; | 2935 PageIterator map_iterator_; |
2936 LargePageIterator lo_iterator_; | 2936 LargePageIterator lo_iterator_; |
2937 }; | 2937 }; |
2938 | 2938 |
2939 } // namespace internal | 2939 } // namespace internal |
2940 } // namespace v8 | 2940 } // namespace v8 |
2941 | 2941 |
2942 #endif // V8_HEAP_SPACES_H_ | 2942 #endif // V8_HEAP_SPACES_H_ |
OLD | NEW |