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

Side by Side Diff: Source/platform/heap/ThreadState.h

Issue 883233003: Oilpan: Add free list profiler. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Change type of m_cumulativeAllocationSize to size_t. Created 5 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 | Annotate | Revision Log
« no previous file with comments | « Source/platform/heap/Heap.cpp ('k') | Source/platform/heap/ThreadState.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 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 // For i == 7, the count is the number of objects that survived at least 7 GCs. 522 // For i == 7, the count is the number of objects that survived at least 7 GCs.
523 using GenerationCountsVector = Vector<int, numberOfGenerationsToTrack>; 523 using GenerationCountsVector = Vector<int, numberOfGenerationsToTrack>;
524 Vector<GenerationCountsVector> generations; 524 Vector<GenerationCountsVector> generations;
525 525
526 explicit SnapshotInfo(ThreadState* state) : state(state), freeSize(0), p ageCount(0) { } 526 explicit SnapshotInfo(ThreadState* state) : state(state), freeSize(0), p ageCount(0) { }
527 527
528 size_t getClassTag(const GCInfo*); 528 size_t getClassTag(const GCInfo*);
529 }; 529 };
530 530
531 void snapshot(); 531 void snapshot();
532
533 void snapshotFreeListIfNecessary();
532 #endif 534 #endif
533 535
534 void pushWeakPointerCallback(void*, WeakPointerCallback); 536 void pushWeakPointerCallback(void*, WeakPointerCallback);
535 bool popAndInvokeWeakPointerCallback(Visitor*); 537 bool popAndInvokeWeakPointerCallback(Visitor*);
536 538
537 size_t objectPayloadSizeForTesting(); 539 size_t objectPayloadSizeForTesting();
538 540
539 void postGCProcessing(); 541 void postGCProcessing();
540 void prepareHeapForTermination(); 542 void prepareHeapForTermination();
541 543
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 // to sweep away any objects that are left on this heap. 608 // to sweep away any objects that are left on this heap.
607 // We assert that nothing must remain after this cleanup. 609 // We assert that nothing must remain after this cleanup.
608 // If assertion does not hold we crash as we are potentially 610 // If assertion does not hold we crash as we are potentially
609 // in the dangling pointer situation. 611 // in the dangling pointer situation.
610 void cleanup(); 612 void cleanup();
611 void cleanupPages(); 613 void cleanupPages();
612 614
613 void unregisterPreFinalizerInternal(void*); 615 void unregisterPreFinalizerInternal(void*);
614 void invokePreFinalizers(Visitor&); 616 void invokePreFinalizers(Visitor&);
615 617
618 #if ENABLE(GC_PROFILING)
619 void snapshotFreeList();
620 #endif
621
616 static WTF::ThreadSpecific<ThreadState*>* s_threadSpecific; 622 static WTF::ThreadSpecific<ThreadState*>* s_threadSpecific;
617 static uintptr_t s_mainThreadStackStart; 623 static uintptr_t s_mainThreadStackStart;
618 static uintptr_t s_mainThreadUnderestimatedStackSize; 624 static uintptr_t s_mainThreadUnderestimatedStackSize;
619 static SafePointBarrier* s_safePointBarrier; 625 static SafePointBarrier* s_safePointBarrier;
620 626
621 // We can't create a static member of type ThreadState here 627 // We can't create a static member of type ThreadState here
622 // because it will introduce global constructor and destructor. 628 // because it will introduce global constructor and destructor.
623 // We would like to manage lifetime of the ThreadState attached 629 // We would like to manage lifetime of the ThreadState attached
624 // to the main thread explicitly instead and still use normal 630 // to the main thread explicitly instead and still use normal
625 // constructor and destructor for the ThreadState class. 631 // constructor and destructor for the ThreadState class.
(...skipping 27 matching lines...) Expand all
653 HashMap<void*, bool (*)(void*, Visitor&)> m_preFinalizers; 659 HashMap<void*, bool (*)(void*, Visitor&)> m_preFinalizers;
654 660
655 v8::Isolate* m_isolate; 661 v8::Isolate* m_isolate;
656 void (*m_traceDOMWrappers)(v8::Isolate*, Visitor*); 662 void (*m_traceDOMWrappers)(v8::Isolate*, Visitor*);
657 663
658 #if defined(ADDRESS_SANITIZER) 664 #if defined(ADDRESS_SANITIZER)
659 void* m_asanFakeStack; 665 void* m_asanFakeStack;
660 #endif 666 #endif
661 667
662 Vector<PageMemoryRegion*> m_allocatedRegionsSinceLastGC; 668 Vector<PageMemoryRegion*> m_allocatedRegionsSinceLastGC;
669
670 #if ENABLE(GC_PROFILING)
671 double m_nextFreeListSnapshotTime;
672 #endif
663 }; 673 };
664 674
665 template<ThreadAffinity affinity> class ThreadStateFor; 675 template<ThreadAffinity affinity> class ThreadStateFor;
666 676
667 template<> class ThreadStateFor<MainThreadOnly> { 677 template<> class ThreadStateFor<MainThreadOnly> {
668 public: 678 public:
669 static ThreadState* state() 679 static ThreadState* state()
670 { 680 {
671 // This specialization must only be used from the main thread. 681 // This specialization must only be used from the main thread.
672 ASSERT(ThreadState::current()->isMainThread()); 682 ASSERT(ThreadState::current()->isMainThread());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
730 m_locked = false; 740 m_locked = false;
731 } 741 }
732 742
733 MutexBase& m_mutex; 743 MutexBase& m_mutex;
734 bool m_locked; 744 bool m_locked;
735 }; 745 };
736 746
737 } // namespace blink 747 } // namespace blink
738 748
739 #endif // ThreadState_h 749 #endif // ThreadState_h
OLDNEW
« no previous file with comments | « Source/platform/heap/Heap.cpp ('k') | Source/platform/heap/ThreadState.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698