Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(824)

Side by Side Diff: src/heap/spaces.h

Issue 2445283003: Reland "[heap] Start sweeper tasks after evacuation" (second try). (Closed)
Patch Set: bugfix Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/heap/mark-compact.cc ('k') | src/heap/spaces.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 393 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 // Checks whether |addr| can be a limit of addresses in this page. It's a 404 // Checks whether |addr| can be a limit of addresses in this page. It's a
405 // limit if it's in the page, or if it's just after the last byte of the page. 405 // limit if it's in the page, or if it's just after the last byte of the page.
406 bool ContainsLimit(Address addr) { 406 bool ContainsLimit(Address addr) {
407 return addr >= area_start() && addr <= area_end(); 407 return addr >= area_start() && addr <= area_end();
408 } 408 }
409 409
410 base::AtomicValue<ConcurrentSweepingState>& concurrent_sweeping_state() { 410 base::AtomicValue<ConcurrentSweepingState>& concurrent_sweeping_state() {
411 return concurrent_sweeping_; 411 return concurrent_sweeping_;
412 } 412 }
413 413
414 bool SweepingDone() {
415 return concurrent_sweeping_state().Value() == kSweepingDone;
416 }
417
414 // Manage live byte count, i.e., count of bytes in black objects. 418 // Manage live byte count, i.e., count of bytes in black objects.
415 inline void ResetLiveBytes(); 419 inline void ResetLiveBytes();
416 inline void IncrementLiveBytes(int by); 420 inline void IncrementLiveBytes(int by);
417 421
418 int LiveBytes() { 422 int LiveBytes() {
419 DCHECK_LE(static_cast<unsigned>(live_byte_count_), size_); 423 DCHECK_LE(static_cast<unsigned>(live_byte_count_), size_);
420 return live_byte_count_; 424 return live_byte_count_;
421 } 425 }
422 426
423 void SetLiveBytes(int live_bytes) { 427 void SetLiveBytes(int live_bytes) {
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after
728 732
729 // WaitUntilSweepingCompleted only works when concurrent sweeping is in 733 // WaitUntilSweepingCompleted only works when concurrent sweeping is in
730 // progress. In particular, when we know that right before this call a 734 // progress. In particular, when we know that right before this call a
731 // sweeper thread was sweeping this page. 735 // sweeper thread was sweeping this page.
732 void WaitUntilSweepingCompleted() { 736 void WaitUntilSweepingCompleted() {
733 mutex_->Lock(); 737 mutex_->Lock();
734 mutex_->Unlock(); 738 mutex_->Unlock();
735 DCHECK(SweepingDone()); 739 DCHECK(SweepingDone());
736 } 740 }
737 741
738 bool SweepingDone() {
739 return concurrent_sweeping_state().Value() == kSweepingDone;
740 }
741
742 void ResetFreeListStatistics(); 742 void ResetFreeListStatistics();
743 743
744 size_t AvailableInFreeList(); 744 size_t AvailableInFreeList();
745 745
746 size_t LiveBytesFromFreeList() { 746 size_t LiveBytesFromFreeList() {
747 DCHECK_GE(area_size(), wasted_memory() + available_in_free_list()); 747 DCHECK_GE(area_size(), wasted_memory() + available_in_free_list());
748 return area_size() - wasted_memory() - available_in_free_list(); 748 return area_size() - wasted_memory() - available_in_free_list();
749 } 749 }
750 750
751 FreeListCategory* free_list_category(FreeListCategoryType type) { 751 FreeListCategory* free_list_category(FreeListCategoryType type) {
(...skipping 2149 matching lines...) Expand 10 before | Expand all | Expand 10 after
2901 PageIterator old_iterator_; 2901 PageIterator old_iterator_;
2902 PageIterator code_iterator_; 2902 PageIterator code_iterator_;
2903 PageIterator map_iterator_; 2903 PageIterator map_iterator_;
2904 LargePageIterator lo_iterator_; 2904 LargePageIterator lo_iterator_;
2905 }; 2905 };
2906 2906
2907 } // namespace internal 2907 } // namespace internal
2908 } // namespace v8 2908 } // namespace v8
2909 2909
2910 #endif // V8_HEAP_SPACES_H_ 2910 #endif // V8_HEAP_SPACES_H_
OLDNEW
« no previous file with comments | « src/heap/mark-compact.cc ('k') | src/heap/spaces.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698