Changeset 77077 in webkit
- Timestamp:
- Jan 29, 2011 7:32:52 PM (13 years ago)
- Location:
- trunk/Source
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r77070 r77077 1 2011-01-28 Geoffrey Garen <ggaren@apple.com> 2 3 Reviewed by Maciej Stachowiak. 4 5 Some more Heap cleanup. 6 https://bugs.webkit.org/show_bug.cgi?id=53357 7 8 * JavaScriptCore.exp: 9 * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Updated exported symbols. 10 11 * runtime/Heap.cpp: 12 (JSC::Heap::reportExtraMemoryCostSlowCase): Renamed recordExtraCost to 13 reportExtraMemoryCostSlowCase to match our naming conventions. 14 15 (JSC::Heap::capacity): Renamed size to capacity because this function 16 returns the capacity of the heap, including unused portions. 17 18 * runtime/Heap.h: 19 (JSC::Heap::globalData): 20 (JSC::Heap::markedSpace): 21 (JSC::Heap::machineStackMarker): 22 (JSC::Heap::reportExtraMemoryCost): Moved statics to the top of the file. 23 Moved ctor and dtor to the beginning of the class definition. Grouped 24 functions by purpose. 25 26 * runtime/MarkedSpace.cpp: 27 (JSC::MarkedSpace::capacity): Renamed size to capacity because this 28 function returns the capacity of the heap, including unused portions. 29 30 * runtime/MarkedSpace.h: Removed statistics and the Statistics class because 31 the same information can be gotten just by calling size() and capacity(). 32 33 * runtime/MemoryStatistics.cpp: 34 * runtime/MemoryStatistics.h: Ditto. 35 1 36 2011-01-29 Daniel Bates <dbates@rim.com> 2 37 -
trunk/Source/JavaScriptCore/JavaScriptCore.exp
r77044 r77077 167 167 __ZN3JSC14TimeoutChecker10didTimeOutEPNS_9ExecStateE 168 168 __ZN3JSC14TimeoutChecker5resetEv 169 __ZN3JSC14heapStatisticsEPNS_12JSGlobalDataE170 169 __ZN3JSC14throwTypeErrorEPNS_9ExecStateE 171 170 __ZN3JSC15JSWrapperObject12markChildrenERNS_9MarkStackE … … 211 210 __ZN3JSC4Heap14primaryHeapEndEv 212 211 __ZN3JSC4Heap15addWeakGCHandleEPNS_6JSCellE 213 __ZN3JSC4Heap15recordExtraCostEm214 212 __ZN3JSC4Heap16objectTypeCountsEv 215 213 __ZN3JSC4Heap16primaryHeapBeginEv … … 220 218 __ZN3JSC4Heap25protectedObjectTypeCountsEv 221 219 __ZN3JSC4Heap26protectedGlobalObjectCountEv 220 __ZN3JSC4Heap29reportExtraMemoryCostSlowCaseEm 222 221 __ZN3JSC4Heap6isBusyEv 223 222 __ZN3JSC4Heap7destroyEv … … 520 519 __ZNK3JSC19SourceProviderCache8byteSizeEv 521 520 __ZNK3JSC24JSObjectWithGlobalObject12globalObjectEv 522 __ZNK3JSC4Heap10statisticsEv523 521 __ZNK3JSC4Heap11objectCountEv 524 522 __ZNK3JSC4Heap4sizeEv 523 __ZNK3JSC4Heap8capacityEv 525 524 __ZNK3JSC6JSCell11toPrimitiveEPNS_9ExecStateENS_22PreferredPrimitiveTypeE 526 525 __ZNK3JSC6JSCell12toThisObjectEPNS_9ExecStateE -
trunk/Source/JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
r77044 r77077 71 71 ?callOnMainThreadAndWait@WTF@@YAXP6AXPAX@Z0@Z 72 72 ?cancelCallOnMainThread@WTF@@YAXP6AXPAX@Z0@Z 73 ?capacity@Heap@JSC@@QBEIXZ 73 74 ?changePrototypeTransition@Structure@JSC@@SA?AV?$PassRefPtr@VStructure@JSC@@@WTF@@PAV12@VJSValue@2@@Z 74 75 ?checkCurrentIdentifierTable@Identifier@JSC@@CAXPAVExecState@2@@Z … … 268 269 ?randomNumber@WTF@@YANXZ 269 270 ?recompileAllJSFunctions@Debugger@JSC@@QAEXPAVJSGlobalData@2@@Z 270 ?recordExtraCost@Heap@JSC@@AAEXI@Z271 271 ?reifyString@StringBuilder@WTF@@AAEXXZ 272 272 ?releaseDecommitted@OSAllocator@WTF@@SAXPAXI@Z 273 273 ?releaseStack@MarkStack@JSC@@CAXPAXI@Z 274 ?reportExtraMemoryCostSlowCase@Heap@JSC@@AAEXI@Z 274 275 ?reserveAndCommit@OSAllocator@WTF@@SAPAXIW4Usage@12@_N1@Z 275 276 ?reset@ParserArena@JSC@@QAEXXZ -
trunk/Source/JavaScriptCore/runtime/Heap.cpp
r77044 r77077 80 80 } 81 81 82 void Heap::re cordExtraCost(size_t cost)82 void Heap::reportExtraMemoryCostSlowCase(size_t cost) 83 83 { 84 84 // Our frequency of garbage collection tries to balance memory use against speed … … 93 93 // collecting more frequently as long as it stays alive. 94 94 95 if (m_extraCost > maxExtraCost && m_extraCost > m_markedSpace. size() / 2) {95 if (m_extraCost > maxExtraCost && m_extraCost > m_markedSpace.capacity() / 2) { 96 96 JAVASCRIPTCORE_GC_BEGIN(); 97 97 … … 303 303 } 304 304 305 MarkedSpace::Statistics Heap::statistics() const306 {307 return m_markedSpace.statistics();308 }309 310 305 size_t Heap::size() const 311 306 { 312 307 return m_markedSpace.size(); 308 } 309 310 size_t Heap::capacity() const 311 { 312 return m_markedSpace.capacity(); 313 313 } 314 314 -
trunk/Source/JavaScriptCore/runtime/Heap.h
r76425 r77077 51 51 WTF_MAKE_NONCOPYABLE(Heap); 52 52 public: 53 void destroy(); 53 static Heap* heap(JSValue); // 0 for immediate values 54 static Heap* heap(JSCell*); 54 55 55 void* allocate(size_t); 56 static bool isCellMarked(const JSCell*); 57 static bool checkMarkCell(const JSCell*); 58 static void markCell(JSCell*); 59 60 Heap(JSGlobalData*); 61 ~Heap(); 62 void destroy(); // JSGlobalData must call destroy() before ~Heap(). 56 63 57 bool isBusy(); // true if an allocation or collection is in progress 58 void collectAllGarbage(); 64 JSGlobalData* globalData() const { return m_globalData; } 65 MarkedSpace& markedSpace() { return m_markedSpace; } 66 MachineStackMarker& machineStackMarker() { return m_machineStackMarker; } 59 67 60 68 GCActivityCallback* activityCallback(); 61 69 void setActivityCallback(PassOwnPtr<GCActivityCallback>); 62 70 63 static const size_t minExtraCost = 256; 64 static const size_t maxExtraCost = 1024 * 1024; 71 bool isBusy(); // true if an allocation or collection is in progress 72 void* allocate(size_t); 73 void collectAllGarbage(); 65 74 66 75 void reportExtraMemoryCost(size_t cost); 67 76 77 void protect(JSValue); 78 bool unprotect(JSValue); // True when the protect count drops to 0. 79 80 bool contains(void*); 81 82 size_t size() const; 83 size_t capacity() const; 68 84 size_t objectCount() const; 69 MarkedSpace::Statistics statistics() const;70 size_t size() const;71 72 void protect(JSValue);73 // Returns true if the value is no longer protected by any protect pointers74 // (though it may still be alive due to heap/stack references).75 bool unprotect(JSValue);76 77 static Heap* heap(JSValue); // 0 for immediate values78 static Heap* heap(JSCell*);79 80 85 size_t globalObjectCount(); 81 86 size_t protectedObjectCount(); … … 83 88 HashCountedSet<const char*>* protectedObjectTypeCounts(); 84 89 HashCountedSet<const char*>* objectTypeCounts(); 85 86 static bool isCellMarked(const JSCell*);87 static bool checkMarkCell(const JSCell*);88 static void markCell(JSCell*);89 90 bool contains(void*);91 90 92 91 WeakGCHandle* addWeakGCHandle(JSCell*); … … 97 96 HashSet<MarkedArgumentBuffer*>& markListSet() { if (!m_markListSet) m_markListSet = new HashSet<MarkedArgumentBuffer*>; return *m_markListSet; } 98 97 99 JSGlobalData* globalData() const { return m_globalData; }100 101 98 LiveObjectIterator primaryHeapBegin(); 102 99 LiveObjectIterator primaryHeapEnd(); 103 100 104 MachineStackMarker& machineStackMarker() { return m_machineStackMarker; }105 106 MarkedSpace& markedSpace() { return m_markedSpace; }107 108 101 private: 109 102 friend class JSGlobalData; 110 Heap(JSGlobalData*);111 ~Heap();112 103 113 void recordExtraCost(size_t); 104 static const size_t minExtraCost = 256; 105 static const size_t maxExtraCost = 1024 * 1024; 106 107 void reportExtraMemoryCostSlowCase(size_t); 114 108 115 109 void markRoots(); … … 164 158 { 165 159 if (cost > minExtraCost) 166 re cordExtraCost(cost);160 reportExtraMemoryCostSlowCase(cost); 167 161 } 168 162 -
trunk/Source/JavaScriptCore/runtime/MarkedSpace.cpp
r76425 r77077 296 296 } 297 297 298 void MarkedSpace::addToStatistics(Statistics& statistics) const299 {300 statistics.size += m_heap.usedBlocks * BLOCK_SIZE;301 statistics.free += m_heap.usedBlocks * BLOCK_SIZE - (objectCount() * HeapConstants::cellSize);302 }303 304 MarkedSpace::Statistics MarkedSpace::statistics() const305 {306 Statistics statistics = { 0, 0 };307 addToStatistics(statistics);308 return statistics;309 }310 311 298 size_t MarkedSpace::size() const 299 { 300 return objectCount() * HeapConstants::cellSize; 301 } 302 303 size_t MarkedSpace::capacity() const 312 304 { 313 305 return m_heap.usedBlocks * BLOCK_SIZE; -
trunk/Source/JavaScriptCore/runtime/MarkedSpace.h
r76432 r77077 65 65 WTF_MAKE_NONCOPYABLE(MarkedSpace); 66 66 public: 67 struct Statistics {68 size_t size;69 size_t free;70 };71 72 67 static Heap* heap(JSCell*); 73 68 … … 89 84 90 85 size_t size() const; 86 size_t capacity() const; 91 87 size_t objectCount() const; 92 Statistics statistics() const;93 88 94 89 bool contains(void*); … … 113 108 void clearMarkBits(CollectorBlock*); 114 109 size_t markedCells(size_t startBlock = 0, size_t startCell = 0) const; 115 116 void addToStatistics(Statistics&) const;117 110 118 111 CollectorHeap m_heap; -
trunk/Source/JavaScriptCore/runtime/MemoryStatistics.cpp
r75855 r77077 33 33 namespace JSC { 34 34 35 MarkedSpace::Statistics heapStatistics(JSGlobalData* commonGlobalData)36 {37 return commonGlobalData->heap.statistics();38 }39 40 35 GlobalMemoryStatistics globalMemoryStatistics() 41 36 { -
trunk/Source/JavaScriptCore/runtime/MemoryStatistics.h
r75855 r77077 38 38 }; 39 39 40 MarkedSpace::Statistics heapStatistics(JSGlobalData* commonGlobalData);41 40 GlobalMemoryStatistics globalMemoryStatistics(); 42 41 -
trunk/Source/WebCore/ChangeLog
r77076 r77077 1 2011-01-28 Geoffrey Garen <ggaren@apple.com> 2 3 Reviewed by Maciej Stachowiak. 4 5 Some more Heap cleanup. 6 https://bugs.webkit.org/show_bug.cgi?id=53357 7 8 Updated for JavaScriptCore changes. 9 10 * bindings/js/ScriptGCEvent.cpp: 11 (WebCore::ScriptGCEvent::getHeapSize): 12 1 13 2011-01-29 Adam Barth <abarth@webkit.org> 2 14 -
trunk/Source/WebCore/bindings/js/ScriptGCEvent.cpp
r75443 r77077 46 46 { 47 47 JSGlobalData* globalData = JSDOMWindow::commonJSGlobalData(); 48 totalHeapSize = globalData->heap. size();48 totalHeapSize = globalData->heap.capacity(); 49 49 usedHeapSize = totalHeapSize; 50 50 } 51 51 52 } // namespace WebCore 52 53 -
trunk/Source/WebKit/mac/ChangeLog
r77044 r77077 1 2011-01-28 Geoffrey Garen <ggaren@apple.com> 2 3 Reviewed by Maciej Stachowiak. 4 5 Some more Heap cleanup. 6 https://bugs.webkit.org/show_bug.cgi?id=53357 7 8 Updated for JavaScriptCore changes. 9 10 * Misc/WebCoreStatistics.mm: 11 (+[WebCoreStatistics memoryStatistics]): 12 1 13 2011-01-28 Sheriff Bot <webkit.review.bot@gmail.com> 2 14 -
trunk/Source/WebKit/mac/Misc/WebCoreStatistics.mm
r75855 r77077 198 198 199 199 JSLock lock(SilenceAssertionsOnly); 200 MarkedSpace::Statistics heapMemoryStats = heapStatistics(JSDOMWindow::commonJSGlobalData()); 200 size_t heapSize = JSDOMWindow::commonJSGlobalData()->heap.size(); 201 size_t heapFree = JSDOMWindow::commonJSGlobalData()->heap.capacity() - heapSize; 201 202 GlobalMemoryStatistics globalMemoryStats = globalMemoryStatistics(); 202 203 … … 205 206 [NSNumber numberWithInt:fastMallocStatistics.committedVMBytes], @"FastMallocCommittedVMBytes", 206 207 [NSNumber numberWithInt:fastMallocStatistics.freeListBytes], @"FastMallocFreeListBytes", 207 [NSNumber numberWithInt:heap MemoryStats.size], @"JavaScriptHeapSize",208 [NSNumber numberWithInt:heap MemoryStats.free], @"JavaScriptFreeSize",208 [NSNumber numberWithInt:heapSize], @"JavaScriptHeapSize", 209 [NSNumber numberWithInt:heapFree], @"JavaScriptFreeSize", 209 210 [NSNumber numberWithUnsignedInt:(unsigned int)globalMemoryStats.stackBytes], @"JavaScriptStackSize", 210 211 [NSNumber numberWithUnsignedInt:(unsigned int)globalMemoryStats.JITBytes], @"JavaScriptJITSize", -
trunk/Source/WebKit2/Shared/mac/WebMemorySampler.mac.mm
r76991 r77077 117 117 118 118 JSLock lock(SilenceAssertionsOnly); 119 MarkedSpace::Statistics heapMemoryStats = heapStatistics(JSDOMWindow::commonJSGlobalData()); 120 size_t jscHeapBytesInUse = heapMemoryStats.size - heapMemoryStats.free; 121 size_t jscHeapBytesCommitted = heapMemoryStats.size; 119 size_t jscHeapBytesInUse = JSDOMWindow::commonJSGlobalData()->heap.size(); 120 size_t jscHeapBytesCommitted = JSDOMWindow::commonJSGlobalData()->heap.capacity(); 122 121 totalBytesInUse += jscHeapBytesInUse; 123 122 totalBytesCommitted += jscHeapBytesCommitted;
Note: See TracChangeset
for help on using the changeset viewer.