diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2016-04-10 09:28:39 +0000 |
commit | 32761a6cee1d0dee366b885b7b9c777e67885688 (patch) | |
tree | d6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/heap/CopyVisitorInlines.h | |
parent | a4e969f4965059196ca948db781e52f7cfebf19e (diff) | |
download | WebKitGtk-tarball-32761a6cee1d0dee366b885b7b9c777e67885688.tar.gz |
webkitgtk-2.4.11webkitgtk-2.4.11
Diffstat (limited to 'Source/JavaScriptCore/heap/CopyVisitorInlines.h')
-rw-r--r-- | Source/JavaScriptCore/heap/CopyVisitorInlines.h | 36 |
1 files changed, 32 insertions, 4 deletions
diff --git a/Source/JavaScriptCore/heap/CopyVisitorInlines.h b/Source/JavaScriptCore/heap/CopyVisitorInlines.h index 70cc67298..6e197fca4 100644 --- a/Source/JavaScriptCore/heap/CopyVisitorInlines.h +++ b/Source/JavaScriptCore/heap/CopyVisitorInlines.h @@ -26,15 +26,26 @@ #ifndef CopyVisitorInlines_h #define CopyVisitorInlines_h +#include "ClassInfo.h" #include "CopyVisitor.h" -#include "Heap.h" +#include "GCThreadSharedData.h" +#include "JSCell.h" +#include "JSDestructibleObject.h" namespace JSC { +inline void CopyVisitor::visitItem(CopyWorklistItem item) +{ + if (item.token() == ButterflyCopyToken) { + JSObject::copyBackingStore(item.cell(), *this, ButterflyCopyToken); + return; + } + + item.cell()->methodTable()->copyBackingStore(item.cell(), *this, item.token()); +} + inline bool CopyVisitor::checkIfShouldCopy(void* oldPtr) { - if (!oldPtr) - return false; CopiedBlock* block = CopiedSpace::blockFor(oldPtr); if (block->isOversize() || block->isPinned()) return false; @@ -55,7 +66,7 @@ inline void* CopyVisitor::allocateNewSpace(size_t bytes) inline void* CopyVisitor::allocateNewSpaceSlow(size_t bytes) { CopiedBlock* newBlock = 0; - m_heap.m_storageSpace.doneFillingBlock(m_copiedAllocator.resetCurrentBlock(), &newBlock); + m_shared.m_copiedSpace->doneFillingBlock(m_copiedAllocator.resetCurrentBlock(), &newBlock); m_copiedAllocator.setCurrentBlock(newBlock); void* result = 0; @@ -64,6 +75,22 @@ inline void* CopyVisitor::allocateNewSpaceSlow(size_t bytes) return result; } +inline void CopyVisitor::startCopying() +{ + ASSERT(!m_copiedAllocator.isValid()); + CopiedBlock* block = 0; + m_shared.m_copiedSpace->doneFillingBlock(m_copiedAllocator.resetCurrentBlock(), &block); + m_copiedAllocator.setCurrentBlock(block); +} + +inline void CopyVisitor::doneCopying() +{ + if (!m_copiedAllocator.isValid()) + return; + + m_shared.m_copiedSpace->doneFillingBlock(m_copiedAllocator.resetCurrentBlock(), 0); +} + inline void CopyVisitor::didCopy(void* ptr, size_t bytes) { CopiedBlock* block = CopiedSpace::blockFor(ptr); @@ -76,3 +103,4 @@ inline void CopyVisitor::didCopy(void* ptr, size_t bytes) } // namespace JSC #endif // CopyVisitorInlines_h + |