Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Copying should be generational
https://bugs.webkit.org/show_bug.cgi?id=126555 Reviewed by Geoffrey Garen. This patch adds support for copying to our generational collector. Eden collections always trigger copying. Full collections use our normal fragmentation-based heuristics. The way this works is that the CopiedSpace now has the notion of an old generation set of CopiedBlocks and a new generation of CopiedBlocks. During each mutator cycle new CopiedSpace allocations reside in the new generation. When a collection occurs, those blocks are moved to the old generation. One key thing to remember is that both new and old generation objects in the MarkedSpace can refer to old or new generation allocations in CopiedSpace. This is why we must fire write barriers when assigning to an old (MarkedSpace) object's Butterfly. * heap/CopiedAllocator.h: (JSC::CopiedAllocator::tryAllocateDuringCopying): * heap/CopiedBlock.h: (JSC::CopiedBlock::CopiedBlock): (JSC::CopiedBlock::didEvacuateBytes): (JSC::CopiedBlock::isOld): (JSC::CopiedBlock::didPromote): * heap/CopiedBlockInlines.h: (JSC::CopiedBlock::reportLiveBytes): (JSC::CopiedBlock::reportLiveBytesDuringCopying): * heap/CopiedSpace.cpp: (JSC::CopiedSpace::CopiedSpace): (JSC::CopiedSpace::~CopiedSpace): (JSC::CopiedSpace::init): (JSC::CopiedSpace::tryAllocateOversize): (JSC::CopiedSpace::tryReallocateOversize): (JSC::CopiedSpace::doneFillingBlock): (JSC::CopiedSpace::didStartFullCollection): (JSC::CopiedSpace::doneCopying): (JSC::CopiedSpace::size): (JSC::CopiedSpace::capacity): (JSC::CopiedSpace::isPagedOut): * heap/CopiedSpace.h: (JSC::CopiedSpace::CopiedGeneration::CopiedGeneration): * heap/CopiedSpaceInlines.h: (JSC::CopiedSpace::contains): (JSC::CopiedSpace::recycleEvacuatedBlock): (JSC::CopiedSpace::allocateBlock): (JSC::CopiedSpace::startedCopying): * heap/CopyVisitor.cpp: (JSC::CopyVisitor::copyFromShared): * heap/CopyVisitorInlines.h: (JSC::CopyVisitor::allocateNewSpace): (JSC::CopyVisitor::allocateNewSpaceSlow): * heap/GCThreadSharedData.cpp: (JSC::GCThreadSharedData::didStartCopying): * heap/Heap.cpp: (JSC::Heap::copyBackingStores): * heap/SlotVisitorInlines.h: (JSC::SlotVisitor::copyLater): * heap/TinyBloomFilter.h: (JSC::TinyBloomFilter::add): Canonical link: https://commits.webkit.org/144997@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@162017 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- Loading branch information
Mark Hahnenberg
committed
Jan 14, 2014
1 parent
0e9a7e3
commit 4c18225e23c06df0853207dbfd80d2286d64a36b
Showing
13 changed files
with
367 additions
and
128 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.