Changeset 96760 in webkit for trunk/Source/JavaScriptCore/heap
- Timestamp:
- Oct 5, 2011, 3:44:36 PM (14 years ago)
- Location:
- trunk/Source/JavaScriptCore/heap
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/heap/Heap.cpp
r96738 r96760 809 809 } 810 810 811 void Heap::addFinalizer(JSCell* cell, Finalizer finalizer) 812 { 813 Weak<JSCell> weak(*globalData(), cell, &m_finalizerOwner, reinterpret_cast<void*>(finalizer)); 814 weak.leakHandle(); // Balanced by FinalizerOwner::finalize(). 815 } 816 817 void Heap::FinalizerOwner::finalize(Handle<Unknown> handle, void* context) 818 { 819 Weak<JSCell> weak(Weak<JSCell>::Adopt, handle); 820 Finalizer finalizer = reinterpret_cast<Finalizer>(context); 821 finalizer(weak.get()); 822 } 823 811 824 } // namespace JSC -
trunk/Source/JavaScriptCore/heap/Heap.h
r96465 r96760 93 93 void* allocate(size_t); 94 94 95 typedef void (*Finalizer)(JSCell*); 96 void addFinalizer(JSCell*, Finalizer); 97 95 98 void notifyIsSafeToCollect() { m_isSafeToCollect = true; } 96 99 void collectAllGarbage(); … … 131 134 static const size_t minExtraCost = 256; 132 135 static const size_t maxExtraCost = 1024 * 1024; 136 137 class FinalizerOwner : public WeakHandleOwner { 138 virtual void finalize(Handle<Unknown>, void* context); 139 }; 133 140 134 141 bool isValidAllocation(size_t); … … 194 201 HandleStack m_handleStack; 195 202 JettisonedCodeBlocks m_jettisonedCodeBlocks; 203 FinalizerOwner m_finalizerOwner; 196 204 197 205 bool m_isSafeToCollect;
Note:
See TracChangeset
for help on using the changeset viewer.