OLD | NEW |
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 526 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
537 | 537 |
538 void collectAndReportMarkSweepStats() const; | 538 void collectAndReportMarkSweepStats() const; |
539 void reportMarkSweepStats(const char* statsName, const ClassAgeCountsMap&) c
onst; | 539 void reportMarkSweepStats(const char* statsName, const ClassAgeCountsMap&) c
onst; |
540 #endif | 540 #endif |
541 | 541 |
542 void pushThreadLocalWeakCallback(void*, WeakCallback); | 542 void pushThreadLocalWeakCallback(void*, WeakCallback); |
543 bool popAndInvokeThreadLocalWeakCallback(Visitor*); | 543 bool popAndInvokeThreadLocalWeakCallback(Visitor*); |
544 void threadLocalWeakProcessing(); | 544 void threadLocalWeakProcessing(); |
545 | 545 |
546 size_t objectPayloadSizeForTesting(); | 546 size_t objectPayloadSizeForTesting(); |
547 void prepareHeapForTermination(); | |
548 | 547 |
549 // Register the pre-finalizer for the |self| object. This method is normally | 548 // Register the pre-finalizer for the |self| object. This method is normally |
550 // called in the constructor of the |self| object. The class T must have | 549 // called in the constructor of the |self| object. The class T must have |
551 // USING_PRE_FINALIZER(). | 550 // USING_PRE_FINALIZER(). |
552 template<typename T> | 551 template<typename T> |
553 void registerPreFinalizer(T* self) | 552 void registerPreFinalizer(T* self) |
554 { | 553 { |
555 static_assert(sizeof(&T::invokePreFinalizer) > 0, "USING_PRE_FINALIZER(T
) must be defined."); | 554 static_assert(sizeof(&T::invokePreFinalizer) > 0, "USING_PRE_FINALIZER(T
) must be defined."); |
556 ASSERT(checkThread()); | 555 ASSERT(checkThread()); |
557 ASSERT(!sweepForbidden()); | 556 ASSERT(!sweepForbidden()); |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
698 // When ThreadState is detaching from non-main thread its | 697 // When ThreadState is detaching from non-main thread its |
699 // heap is expected to be empty (because it is going away). | 698 // heap is expected to be empty (because it is going away). |
700 // Perform registered cleanup tasks and garbage collection | 699 // Perform registered cleanup tasks and garbage collection |
701 // to sweep away any objects that are left on this heap. | 700 // to sweep away any objects that are left on this heap. |
702 // We assert that nothing must remain after this cleanup. | 701 // We assert that nothing must remain after this cleanup. |
703 // If assertion does not hold we crash as we are potentially | 702 // If assertion does not hold we crash as we are potentially |
704 // in the dangling pointer situation. | 703 // in the dangling pointer situation. |
705 void cleanup(); | 704 void cleanup(); |
706 void cleanupPages(); | 705 void cleanupPages(); |
707 | 706 |
| 707 void prepareForThreadStateTermination(); |
| 708 |
708 void invokePreFinalizers(); | 709 void invokePreFinalizers(); |
709 | 710 |
710 void takeSnapshot(SnapshotType); | 711 void takeSnapshot(SnapshotType); |
711 #if ENABLE(GC_PROFILING) | 712 #if ENABLE(GC_PROFILING) |
712 void snapshotFreeList(); | 713 void snapshotFreeList(); |
713 #endif | 714 #endif |
714 void clearHeapAges(); | 715 void clearHeapAges(); |
715 int heapIndexOfVectorHeapLeastRecentlyExpanded(int beginHeapIndex, int endHe
apIndex); | 716 int heapIndexOfVectorHeapLeastRecentlyExpanded(int beginHeapIndex, int endHe
apIndex); |
716 | 717 |
717 using InterruptorVector = Vector<OwnPtr<Interruptor>>; | 718 using InterruptorVector = Vector<OwnPtr<Interruptor>>; |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
802 }; | 803 }; |
803 | 804 |
804 template<> class ThreadStateFor<AnyThread> { | 805 template<> class ThreadStateFor<AnyThread> { |
805 public: | 806 public: |
806 static ThreadState* state() { return ThreadState::current(); } | 807 static ThreadState* state() { return ThreadState::current(); } |
807 }; | 808 }; |
808 | 809 |
809 } // namespace blink | 810 } // namespace blink |
810 | 811 |
811 #endif // ThreadState_h | 812 #endif // ThreadState_h |
OLD | NEW |