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

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

Issue 2862563002: [heap] Pause black allocation during GCs (Closed)
Patch Set: Created 3 years, 7 months 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/scavenger.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 802 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 } 813 }
814 void remove_available_in_free_list(size_t available) { 814 void remove_available_in_free_list(size_t available) {
815 DCHECK_LE(available, area_size()); 815 DCHECK_LE(available, area_size());
816 DCHECK_GE(available_in_free_list(), available); 816 DCHECK_GE(available_in_free_list(), available);
817 available_in_free_list_.Decrement(available); 817 available_in_free_list_.Decrement(available);
818 } 818 }
819 819
820 size_t ShrinkToHighWaterMark(); 820 size_t ShrinkToHighWaterMark();
821 821
822 V8_EXPORT_PRIVATE void CreateBlackArea(Address start, Address end); 822 V8_EXPORT_PRIVATE void CreateBlackArea(Address start, Address end);
823 void DestroyBlackArea(Address start, Address end);
823 824
824 #ifdef DEBUG 825 #ifdef DEBUG
825 void Print(); 826 void Print();
826 #endif // DEBUG 827 #endif // DEBUG
827 828
828 private: 829 private:
829 enum InitializationMode { kFreeMemory, kDoNotFreeMemory }; 830 enum InitializationMode { kFreeMemory, kDoNotFreeMemory };
830 831
831 template <InitializationMode mode = kFreeMemory> 832 template <InitializationMode mode = kFreeMemory>
832 static inline Page* Initialize(Heap* heap, MemoryChunk* chunk, 833 static inline Page* Initialize(Heap* heap, MemoryChunk* chunk,
(...skipping 1236 matching lines...) Expand 10 before | Expand all | Expand 10 after
2069 MemoryChunk::UpdateHighWaterMark(allocation_info_.top()); 2070 MemoryChunk::UpdateHighWaterMark(allocation_info_.top());
2070 allocation_info_.Reset(top, limit); 2071 allocation_info_.Reset(top, limit);
2071 } 2072 }
2072 2073
2073 void SetAllocationInfo(Address top, Address limit); 2074 void SetAllocationInfo(Address top, Address limit);
2074 2075
2075 // Empty space allocation info, returning unused area to free list. 2076 // Empty space allocation info, returning unused area to free list.
2076 void EmptyAllocationInfo(); 2077 void EmptyAllocationInfo();
2077 2078
2078 void MarkAllocationInfoBlack(); 2079 void MarkAllocationInfoBlack();
2080 void UnmarkAllocationInfo();
2079 2081
2080 void AccountAllocatedBytes(size_t bytes) { 2082 void AccountAllocatedBytes(size_t bytes) {
2081 accounting_stats_.AllocateBytes(bytes); 2083 accounting_stats_.AllocateBytes(bytes);
2082 } 2084 }
2083 2085
2084 void IncreaseCapacity(size_t bytes); 2086 void IncreaseCapacity(size_t bytes);
2085 2087
2086 // Releases an unused page and shrinks the space. 2088 // Releases an unused page and shrinks the space.
2087 void ReleasePage(Page* page); 2089 void ReleasePage(Page* page);
2088 2090
(...skipping 864 matching lines...) Expand 10 before | Expand all | Expand 10 after
2953 PageIterator old_iterator_; 2955 PageIterator old_iterator_;
2954 PageIterator code_iterator_; 2956 PageIterator code_iterator_;
2955 PageIterator map_iterator_; 2957 PageIterator map_iterator_;
2956 LargePageIterator lo_iterator_; 2958 LargePageIterator lo_iterator_;
2957 }; 2959 };
2958 2960
2959 } // namespace internal 2961 } // namespace internal
2960 } // namespace v8 2962 } // namespace v8
2961 2963
2962 #endif // V8_HEAP_SPACES_H_ 2964 #endif // V8_HEAP_SPACES_H_
OLDNEW
« no previous file with comments | « src/heap/scavenger.cc ('k') | src/heap/spaces.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698