summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/heap/CopyVisitorInlines.h
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2016-04-10 09:28:39 +0000
commit32761a6cee1d0dee366b885b7b9c777e67885688 (patch)
treed6bec92bebfb216f4126356e55518842c2f476a1 /Source/JavaScriptCore/heap/CopyVisitorInlines.h
parenta4e969f4965059196ca948db781e52f7cfebf19e (diff)
downloadWebKitGtk-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.h36
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
+