Changeset 114698 in webkit for trunk/Source/JavaScriptCore/heap/Heap.h
- Timestamp:
- Apr 19, 2012, 5:05:37 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/heap/Heap.h
r114511 r114698 113 113 114 114 void notifyIsSafeToCollect() { m_isSafeToCollect = true; } 115 115 116 JS_EXPORT_PRIVATE void collectAllGarbage(); 116 117 enum SweepToggle { DoNotSweep, DoSweep }; 118 bool shouldCollect(); 119 void collect(SweepToggle); 117 120 void reportExtraMemoryCost(size_t cost); 118 121 … … 145 148 void getConservativeRegisterRoots(HashSet<JSCell*>& roots); 146 149 147 void addToWaterMark(size_t);148 149 150 double lastGCLength() { return m_lastGCLength; } 150 151 151 152 JS_EXPORT_PRIVATE void discardAllCompiledCode(); 153 154 void didAllocate(size_t); 152 155 153 156 private: … … 164 167 void* allocateWithoutDestructor(size_t); 165 168 166 size_t waterMark();167 size_t highWaterMark();168 bool shouldCollect();169 170 169 static const size_t minExtraCost = 256; 171 170 static const size_t maxExtraCost = 1024 * 1024; … … 193 192 void finalizeUnconditionalFinalizers(); 194 193 195 enum SweepToggle { DoNotSweep, DoSweep };196 void collect(SweepToggle);197 194 void shrink(); 198 195 void releaseFreeBlocks(); … … 209 206 const size_t m_minBytesPerCycle; 210 207 size_t m_lastFullGCSize; 211 size_t m_highWaterMark; 208 209 size_t m_bytesAllocatedLimit; 210 size_t m_bytesAllocated; 212 211 213 212 OperationInProgress m_operationInProgress; … … 258 257 return m_objectSpace.nurseryWaterMark() >= m_minBytesPerCycle && m_isSafeToCollect; 259 258 #else 260 return waterMark() >= highWaterMark()&& m_isSafeToCollect;259 return m_bytesAllocated > m_bytesAllocatedLimit && m_isSafeToCollect; 261 260 #endif 262 261 } … … 292 291 { 293 292 MarkedBlock::blockFor(cell)->setMarked(cell); 294 }295 296 inline size_t Heap::waterMark()297 {298 return m_objectSpace.waterMark() + m_storageSpace.waterMark();299 }300 301 inline size_t Heap::highWaterMark()302 {303 return m_highWaterMark;304 }305 306 inline void Heap::addToWaterMark(size_t size)307 {308 m_objectSpace.addToWaterMark(size);309 if (waterMark() > highWaterMark())310 collect(DoNotSweep);311 293 } 312 294
Note:
See TracChangeset
for help on using the changeset viewer.