Changeset 115545 in webkit for trunk/Source/JavaScriptCore/heap/WeakSetInlines.h
- Timestamp:
- Apr 27, 2012, 10:57:46 PM (13 years ago)
- File:
-
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/heap/WeakSetInlines.h
r115538 r115545 24 24 */ 25 25 26 #ifndef WeakSet _h27 #define WeakSet _h26 #ifndef WeakSetInlines_h 27 #define WeakSetInlines_h 28 28 29 #include "Weak Block.h"29 #include "WeakSet.h" 30 30 31 31 namespace JSC { 32 32 33 class Heap;34 class WeakImpl;35 36 class WeakSet {37 public:38 WeakSet(Heap*);39 void finalizeAll();40 ~WeakSet();41 42 WeakImpl* allocate(JSValue, WeakHandleOwner* = 0, void* context = 0);43 static void deallocate(WeakImpl*);44 45 void visitLiveWeakImpls(HeapRootVisitor&);46 void visitDeadWeakImpls(HeapRootVisitor&);47 48 void sweep();49 void resetAllocator();50 51 void shrink();52 53 private:54 JS_EXPORT_PRIVATE WeakBlock::FreeCell* findAllocator();55 WeakBlock::FreeCell* tryFindAllocator();56 WeakBlock::FreeCell* addAllocator();57 void removeAllocator(WeakBlock*);58 59 WeakBlock::FreeCell* m_allocator;60 WeakBlock* m_nextAllocator;61 DoublyLinkedList<WeakBlock> m_blocks;62 Heap* m_heap;63 };64 65 inline WeakSet::WeakSet(Heap* heap)66 : m_allocator(0)67 , m_nextAllocator(0)68 , m_heap(heap)69 {70 }71 72 33 inline WeakImpl* WeakSet::allocate(JSValue jsValue, WeakHandleOwner* weakHandleOwner, void* context) 73 34 { 74 WeakBlock::FreeCell* allocator = m_allocator; 35 WeakSet& weakSet = *Heap::heap(jsValue.asCell())->weakSet(); 36 WeakBlock::FreeCell* allocator = weakSet.m_allocator; 75 37 if (UNLIKELY(!allocator)) 76 allocator = findAllocator();77 m_allocator = allocator->next;38 allocator = weakSet.findAllocator(); 39 weakSet.m_allocator = allocator->next; 78 40 79 41 WeakImpl* weakImpl = WeakBlock::asWeakImpl(allocator); … … 81 43 } 82 44 83 inline void WeakSet::deallocate(WeakImpl* weakImpl)84 {85 weakImpl->setState(WeakImpl::Deallocated);86 }87 88 45 } // namespace JSC 89 46 90 #endif // WeakSet _h47 #endif // WeakSetInlines_h
Note:
See TracChangeset
for help on using the changeset viewer.