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

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

Issue 2510733002: [heap] Synchronize concurrent chunk map modifications. (Closed)
Patch Set: 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 | « no previous file | 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 2802 matching lines...) Expand 10 before | Expand all | Expand 10 after
2813 2813
2814 // Approximate amount of physical memory committed for this space. 2814 // Approximate amount of physical memory committed for this space.
2815 size_t CommittedPhysicalMemory() override; 2815 size_t CommittedPhysicalMemory() override;
2816 2816
2817 int PageCount() { return page_count_; } 2817 int PageCount() { return page_count_; }
2818 2818
2819 // Finds an object for a given address, returns a Smi if it is not found. 2819 // Finds an object for a given address, returns a Smi if it is not found.
2820 // The function iterates through all objects in this space, may be slow. 2820 // The function iterates through all objects in this space, may be slow.
2821 Object* FindObject(Address a); 2821 Object* FindObject(Address a);
2822 2822
2823 // Takes the chunk_map_mutex_ and calls FindPage after that.
2824 LargePage* FindPageThreadSafe(Address a);
2825
2823 // Finds a large object page containing the given address, returns NULL 2826 // Finds a large object page containing the given address, returns NULL
2824 // if such a page doesn't exist. 2827 // if such a page doesn't exist.
2825 LargePage* FindPage(Address a); 2828 LargePage* FindPage(Address a);
2826 2829
2827 // Clears the marking state of live objects. 2830 // Clears the marking state of live objects.
2828 void ClearMarkingStateOfLiveObjects(); 2831 void ClearMarkingStateOfLiveObjects();
2829 2832
2830 // Frees unmarked objects. 2833 // Frees unmarked objects.
2831 void FreeUnmarkedObjects(); 2834 void FreeUnmarkedObjects();
2832 2835
(...skipping 30 matching lines...) Expand all
2863 void Print() override; 2866 void Print() override;
2864 void ReportStatistics(); 2867 void ReportStatistics();
2865 #endif 2868 #endif
2866 2869
2867 private: 2870 private:
2868 // The head of the linked list of large object chunks. 2871 // The head of the linked list of large object chunks.
2869 LargePage* first_page_; 2872 LargePage* first_page_;
2870 size_t size_; // allocated bytes 2873 size_t size_; // allocated bytes
2871 int page_count_; // number of chunks 2874 int page_count_; // number of chunks
2872 size_t objects_size_; // size of objects 2875 size_t objects_size_; // size of objects
2876 // The chunk_map_mutex_ has to be used when the chunk map is accessed
2877 // concurrently.
2878 base::Mutex chunk_map_mutex_;
2873 // Map MemoryChunk::kAlignment-aligned chunks to large pages covering them 2879 // Map MemoryChunk::kAlignment-aligned chunks to large pages covering them
2874 base::HashMap chunk_map_; 2880 base::HashMap chunk_map_;
2875 2881
2876 friend class LargeObjectIterator; 2882 friend class LargeObjectIterator;
2877 }; 2883 };
2878 2884
2879 2885
2880 class LargeObjectIterator : public ObjectIterator { 2886 class LargeObjectIterator : public ObjectIterator {
2881 public: 2887 public:
2882 explicit LargeObjectIterator(LargeObjectSpace* space); 2888 explicit LargeObjectIterator(LargeObjectSpace* space);
(...skipping 26 matching lines...) Expand all
2909 PageIterator old_iterator_; 2915 PageIterator old_iterator_;
2910 PageIterator code_iterator_; 2916 PageIterator code_iterator_;
2911 PageIterator map_iterator_; 2917 PageIterator map_iterator_;
2912 LargePageIterator lo_iterator_; 2918 LargePageIterator lo_iterator_;
2913 }; 2919 };
2914 2920
2915 } // namespace internal 2921 } // namespace internal
2916 } // namespace v8 2922 } // namespace v8
2917 2923
2918 #endif // V8_HEAP_SPACES_H_ 2924 #endif // V8_HEAP_SPACES_H_
OLDNEW
« no previous file with comments | « no previous file | src/heap/spaces.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698