Changeset 88389 in webkit for trunk/Source/JavaScriptCore/heap/NewSpace.h
- Timestamp:
- Jun 8, 2011, 2:39:27 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/heap/NewSpace.h
r88379 r88389 59 59 60 60 NewSpace(Heap*); 61 void destroy();62 63 size_t highWaterMark();64 void setHighWaterMark(size_t);65 61 66 62 SizeClass& sizeClassFor(size_t); 67 63 void* allocate(SizeClass&); 68 64 69 void clearMarks(); 70 void markRoots(); 65 void addBlock(SizeClass&, MarkedBlock*); 66 void removeBlock(MarkedBlock*); 67 68 size_t waterMark(); 69 size_t highWaterMark(); 70 void setHighWaterMark(size_t); 71 71 72 void resetAllocator(); 72 void sweep();73 void shrink();74 75 size_t size() const;76 size_t capacity() const;77 size_t objectCount() const;78 79 bool contains(const void*);80 81 template<typename Functor> void forEach(Functor&);82 73 83 74 private: … … 92 83 static const size_t impreciseCount = impreciseCutoff / impreciseStep - 1; 93 84 94 typedef HashSet<MarkedBlock*>::iterator BlockIterator;95 96 MarkedBlock* allocateBlock(SizeClass&);97 void freeBlocks(DoublyLinkedList<MarkedBlock>&);98 99 void clearMarks(MarkedBlock*);100 101 85 SizeClass m_preciseSizeClasses[preciseCount]; 102 86 SizeClass m_impreciseSizeClasses[impreciseCount]; 103 HashSet<MarkedBlock*> m_blocks;104 87 size_t m_waterMark; 105 88 size_t m_highWaterMark; … … 107 90 }; 108 91 109 inline bool NewSpace::contains(const void* x)92 inline size_t NewSpace::waterMark() 110 93 { 111 if (!MarkedBlock::isAtomAligned(x)) 112 return false; 113 114 MarkedBlock* block = MarkedBlock::blockFor(x); 115 if (!block || !m_blocks.contains(block)) 116 return false; 117 118 return true; 119 } 120 121 template <typename Functor> inline void NewSpace::forEach(Functor& functor) 122 { 123 BlockIterator end = m_blocks.end(); 124 for (BlockIterator it = m_blocks.begin(); it != end; ++it) 125 (*it)->forEach(functor); 94 return m_waterMark; 126 95 } 127 96 … … 153 122 } 154 123 155 if (m_waterMark < m_highWaterMark)156 return allocateBlock(sizeClass)->allocate();157 158 124 return 0; 159 125 }
Note:
See TracChangeset
for help on using the changeset viewer.