Title: [155406] trunk/Source/_javascript_Core
Revision
155406
Author
[email protected]
Date
2013-09-09 17:35:19 -0700 (Mon, 09 Sep 2013)

Log Message

CopiedSpace::startedCopying should not call MarkedSpace::capacity
https://bugs.webkit.org/show_bug.cgi?id=121045

Reviewed by Geoffrey Garen.

MarkedSpace::capacity() iterates every block in MarkedSpace. Instead we should just 
keep track of our total capacity in MarkedSpace as we add and remove MarkedBlocks.

* heap/MarkedSpace.cpp:
(JSC::MarkedSpace::freeBlock):
* heap/MarkedSpace.h:
(JSC::MarkedSpace::didAddBlock):
(JSC::MarkedSpace::capacity):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (155405 => 155406)


--- trunk/Source/_javascript_Core/ChangeLog	2013-09-10 00:33:10 UTC (rev 155405)
+++ trunk/Source/_javascript_Core/ChangeLog	2013-09-10 00:35:19 UTC (rev 155406)
@@ -1,3 +1,19 @@
+2013-09-09  Mark Hahnenberg  <[email protected]>
+
+        CopiedSpace::startedCopying should not call MarkedSpace::capacity
+        https://bugs.webkit.org/show_bug.cgi?id=121045
+
+        Reviewed by Geoffrey Garen.
+
+        MarkedSpace::capacity() iterates every block in MarkedSpace. Instead we should just 
+        keep track of our total capacity in MarkedSpace as we add and remove MarkedBlocks.
+
+        * heap/MarkedSpace.cpp:
+        (JSC::MarkedSpace::freeBlock):
+        * heap/MarkedSpace.h:
+        (JSC::MarkedSpace::didAddBlock):
+        (JSC::MarkedSpace::capacity):
+
 2013-09-09  Michael Saboff  <[email protected]>
 
         Wrong for SlowPathCall to load callFrame reg from vm.topCallFrame after call

Modified: trunk/Source/_javascript_Core/heap/MarkedSpace.cpp (155405 => 155406)


--- trunk/Source/_javascript_Core/heap/MarkedSpace.cpp	2013-09-10 00:33:10 UTC (rev 155405)
+++ trunk/Source/_javascript_Core/heap/MarkedSpace.cpp	2013-09-10 00:35:19 UTC (rev 155406)
@@ -79,6 +79,7 @@
 
 MarkedSpace::MarkedSpace(Heap* heap)
     : m_heap(heap)
+    , m_capacity(0)
 {
     for (size_t cellSize = preciseStep; cellSize <= preciseCutoff; cellSize += preciseStep) {
         allocatorFor(cellSize).init(heap, this, cellSize, MarkedBlock::None);
@@ -195,6 +196,7 @@
 void MarkedSpace::freeBlock(MarkedBlock* block)
 {
     block->allocator()->removeBlock(block);
+    m_capacity -= block->capacity();
     m_blocks.remove(block);
     if (block->capacity() == MarkedBlock::blockSize) {
         m_heap->blockAllocator().deallocate(MarkedBlock::destroy(block));

Modified: trunk/Source/_javascript_Core/heap/MarkedSpace.h (155405 => 155406)


--- trunk/Source/_javascript_Core/heap/MarkedSpace.h	2013-09-10 00:33:10 UTC (rev 155405)
+++ trunk/Source/_javascript_Core/heap/MarkedSpace.h	2013-09-10 00:35:19 UTC (rev 155406)
@@ -59,10 +59,6 @@
     void operator()(MarkedBlock* block) { count(block->markCount() * block->cellSize()); }
 };
 
-struct Capacity : MarkedBlock::CountFunctor {
-    void operator()(MarkedBlock* block) { count(block->capacity()); }
-};
-
 class MarkedSpace {
     WTF_MAKE_NONCOPYABLE(MarkedSpace);
 public:
@@ -136,6 +132,7 @@
     Subspace m_normalSpace;
 
     Heap* m_heap;
+    size_t m_capacity;
     MarkedBlockSet m_blocks;
 };
 
@@ -245,6 +242,7 @@
 
 inline void MarkedSpace::didAddBlock(MarkedBlock* block)
 {
+    m_capacity += block->capacity();
     m_blocks.add(block);
 }
 
@@ -265,7 +263,7 @@
 
 inline size_t MarkedSpace::capacity()
 {
-    return forEachBlock<Capacity>();
+    return m_capacity;
 }
 
 } // namespace JSC
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to