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

Side by Side Diff: third_party/WebKit/Source/platform/heap/Heap.h

Issue 2697703005: Remove ThreadHeap::m_threads (Closed)
Patch Set: temp Created 3 years, 10 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 | « no previous file | third_party/WebKit/Source/platform/heap/Heap.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 size_t m_objectSizeAtLastGC; 213 size_t m_objectSizeAtLastGC;
214 size_t m_markedObjectSize; 214 size_t m_markedObjectSize;
215 size_t m_markedObjectSizeAtLastCompleteSweep; 215 size_t m_markedObjectSizeAtLastCompleteSweep;
216 size_t m_wrapperCount; 216 size_t m_wrapperCount;
217 size_t m_wrapperCountAtLastGC; 217 size_t m_wrapperCountAtLastGC;
218 size_t m_collectedWrapperCount; 218 size_t m_collectedWrapperCount;
219 size_t m_partitionAllocSizeAtLastGC; 219 size_t m_partitionAllocSizeAtLastGC;
220 double m_estimatedMarkingTimePerByte; 220 double m_estimatedMarkingTimePerByte;
221 }; 221 };
222 222
223 using ThreadStateSet = HashSet<ThreadState*>;
224
225 class PLATFORM_EXPORT ThreadHeap { 223 class PLATFORM_EXPORT ThreadHeap {
226 public: 224 public:
227 ThreadHeap(); 225 explicit ThreadHeap(ThreadState*);
228 ~ThreadHeap(); 226 ~ThreadHeap();
229 227
230 // Returns true for main thread's heap. 228 // Returns true for main thread's heap.
231 // TODO(keishi): Per-thread-heap will return false. 229 // TODO(keishi): Per-thread-heap will return false.
232 bool isMainThreadHeap() { return this == ThreadHeap::mainThreadHeap(); } 230 bool isMainThreadHeap() { return this == ThreadHeap::mainThreadHeap(); }
233 static ThreadHeap* mainThreadHeap() { return s_mainThreadHeap; } 231 static ThreadHeap* mainThreadHeap() { return s_mainThreadHeap; }
234 232
235 #if DCHECK_IS_ON() 233 #if DCHECK_IS_ON()
236 BasePage* findPageFromAddress(Address); 234 BasePage* findPageFromAddress(Address);
237 #endif 235 #endif
(...skipping 25 matching lines...) Expand all
263 static inline bool isHeapObjectAlive(const WeakMember<T>& member) { 261 static inline bool isHeapObjectAlive(const WeakMember<T>& member) {
264 return isHeapObjectAlive(member.get()); 262 return isHeapObjectAlive(member.get());
265 } 263 }
266 template <typename T> 264 template <typename T>
267 static inline bool isHeapObjectAlive(const UntracedMember<T>& member) { 265 static inline bool isHeapObjectAlive(const UntracedMember<T>& member) {
268 return isHeapObjectAlive(member.get()); 266 return isHeapObjectAlive(member.get());
269 } 267 }
270 268
271 StackFrameDepth& stackFrameDepth() { return m_stackFrameDepth; } 269 StackFrameDepth& stackFrameDepth() { return m_stackFrameDepth; }
272 270
273 RecursiveMutex& threadAttachMutex() { return m_threadAttachMutex; }
274 const ThreadStateSet& threads() const { return m_threads; }
275 ThreadHeapStats& heapStats() { return m_stats; } 271 ThreadHeapStats& heapStats() { return m_stats; }
276 CallbackStack* markingStack() const { return m_markingStack.get(); } 272 CallbackStack* markingStack() const { return m_markingStack.get(); }
277 CallbackStack* postMarkingCallbackStack() const { 273 CallbackStack* postMarkingCallbackStack() const {
278 return m_postMarkingCallbackStack.get(); 274 return m_postMarkingCallbackStack.get();
279 } 275 }
280 CallbackStack* globalWeakCallbackStack() const { 276 CallbackStack* globalWeakCallbackStack() const {
281 return m_globalWeakCallbackStack.get(); 277 return m_globalWeakCallbackStack.get();
282 } 278 }
283 CallbackStack* ephemeronStack() const { return m_ephemeronStack.get(); } 279 CallbackStack* ephemeronStack() const { return m_ephemeronStack.get(); }
284 280
285 void attach(ThreadState*);
286 void detach(ThreadState*);
287 void lockThreadAttachMutex();
288 void unlockThreadAttachMutex();
289
290 void visitPersistentRoots(Visitor*); 281 void visitPersistentRoots(Visitor*);
291 void visitStackRoots(Visitor*); 282 void visitStackRoots(Visitor*);
292 void enterSafePoint(ThreadState*); 283 void enterSafePoint(ThreadState*);
293 void leaveSafePoint(); 284 void leaveSafePoint();
294 285
295 // Is the finalizable GC object still alive, but slated for lazy sweeping? 286 // Is the finalizable GC object still alive, but slated for lazy sweeping?
296 // If a lazy sweep is in progress, returns true if the object was found 287 // If a lazy sweep is in progress, returns true if the object was found
297 // to be not reachable during the marking phase, but it has yet to be swept 288 // to be not reachable during the marking phase, but it has yet to be swept
298 // and finalized. The predicate returns false in all other cases. 289 // and finalized. The predicate returns false in all other cases.
299 // 290 //
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 private: 438 private:
448 // Reset counters that track live and allocated-since-last-GC sizes. 439 // Reset counters that track live and allocated-since-last-GC sizes.
449 void resetHeapCounters(); 440 void resetHeapCounters();
450 441
451 static int arenaIndexForObjectSize(size_t); 442 static int arenaIndexForObjectSize(size_t);
452 static bool isNormalArenaIndex(int); 443 static bool isNormalArenaIndex(int);
453 444
454 void commitCallbackStacks(); 445 void commitCallbackStacks();
455 void decommitCallbackStacks(); 446 void decommitCallbackStacks();
456 447
457 RecursiveMutex m_threadAttachMutex; 448 ThreadState* m_threadState;
458 ThreadStateSet m_threads;
459 ThreadHeapStats m_stats; 449 ThreadHeapStats m_stats;
460 std::unique_ptr<RegionTree> m_regionTree; 450 std::unique_ptr<RegionTree> m_regionTree;
461 std::unique_ptr<HeapDoesNotContainCache> m_heapDoesNotContainCache; 451 std::unique_ptr<HeapDoesNotContainCache> m_heapDoesNotContainCache;
462 std::unique_ptr<PagePool> m_freePagePool; 452 std::unique_ptr<PagePool> m_freePagePool;
463 std::unique_ptr<CallbackStack> m_markingStack; 453 std::unique_ptr<CallbackStack> m_markingStack;
464 std::unique_ptr<CallbackStack> m_postMarkingCallbackStack; 454 std::unique_ptr<CallbackStack> m_postMarkingCallbackStack;
465 std::unique_ptr<CallbackStack> m_globalWeakCallbackStack; 455 std::unique_ptr<CallbackStack> m_globalWeakCallbackStack;
466 std::unique_ptr<CallbackStack> m_ephemeronStack; 456 std::unique_ptr<CallbackStack> m_ephemeronStack;
467 BlinkGC::GCReason m_lastGCReason; 457 BlinkGC::GCReason m_lastGCReason;
468 StackFrameDepth m_stackFrameDepth; 458 StackFrameDepth m_stackFrameDepth;
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 T** cell = reinterpret_cast<T**>(object); 667 T** cell = reinterpret_cast<T**>(object);
678 if (*cell && !ObjectAliveTrait<T>::isHeapObjectAlive(*cell)) 668 if (*cell && !ObjectAliveTrait<T>::isHeapObjectAlive(*cell))
679 *cell = nullptr; 669 *cell = nullptr;
680 } 670 }
681 671
682 } // namespace blink 672 } // namespace blink
683 673
684 #include "platform/heap/VisitorImpl.h" 674 #include "platform/heap/VisitorImpl.h"
685 675
686 #endif // Heap_h 676 #endif // Heap_h
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/Source/platform/heap/Heap.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698