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