]> git.saurik.com Git - apple/javascriptcore.git/blobdiff - heap/CopyVisitorInlines.h
JavaScriptCore-7601.1.46.3.tar.gz
[apple/javascriptcore.git] / heap / CopyVisitorInlines.h
index 4e087b8dba0361db6ab991e7e9e54b79890f6e72..6e197fca42f0950c39a24f96c98a1b47daeeb507 100644 (file)
 
 namespace JSC {
 
 
 namespace JSC {
 
-inline void CopyVisitor::visitCell(JSCell* cell)
+inline void CopyVisitor::visitItem(CopyWorklistItem item)
 {
 {
-    ASSERT(cell->structure()->classInfo()->methodTable.copyBackingStore == JSObject::copyBackingStore);
-    JSObject::copyBackingStore(cell, *this);
+    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)
 }
 
 inline bool CopyVisitor::checkIfShouldCopy(void* oldPtr)
@@ -51,7 +55,7 @@ inline bool CopyVisitor::checkIfShouldCopy(void* oldPtr)
 inline void* CopyVisitor::allocateNewSpace(size_t bytes)
 {
     void* result = 0; // Compilers don't realize that this will be assigned.
 inline void* CopyVisitor::allocateNewSpace(size_t bytes)
 {
     void* result = 0; // Compilers don't realize that this will be assigned.
-    if (LIKELY(m_copiedAllocator.tryAllocate(bytes, &result)))
+    if (LIKELY(m_copiedAllocator.tryAllocateDuringCopying(bytes, &result)))
         return result;
     
     result = allocateNewSpaceSlow(bytes);
         return result;
     
     result = allocateNewSpaceSlow(bytes);
@@ -66,7 +70,7 @@ inline void* CopyVisitor::allocateNewSpaceSlow(size_t bytes)
     m_copiedAllocator.setCurrentBlock(newBlock);
 
     void* result = 0;
     m_copiedAllocator.setCurrentBlock(newBlock);
 
     void* result = 0;
-    CheckedBoolean didSucceed = m_copiedAllocator.tryAllocate(bytes, &result);
+    CheckedBoolean didSucceed = m_copiedAllocator.tryAllocateDuringCopying(bytes, &result);
     ASSERT(didSucceed);
     return result;
 }
     ASSERT(didSucceed);
     return result;
 }
@@ -94,7 +98,6 @@ inline void CopyVisitor::didCopy(void* ptr, size_t bytes)
     ASSERT(!block->isPinned());
 
     block->didEvacuateBytes(bytes);
     ASSERT(!block->isPinned());
 
     block->didEvacuateBytes(bytes);
-
 }
 
 } // namespace JSC
 }
 
 } // namespace JSC