summaryrefslogtreecommitdiff
path: root/Source/JavaScriptCore/heap/CopyVisitor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/JavaScriptCore/heap/CopyVisitor.cpp')
-rw-r--r--Source/JavaScriptCore/heap/CopyVisitor.cpp40
1 files changed, 12 insertions, 28 deletions
diff --git a/Source/JavaScriptCore/heap/CopyVisitor.cpp b/Source/JavaScriptCore/heap/CopyVisitor.cpp
index 3d18936ec..2e7dd14dc 100644
--- a/Source/JavaScriptCore/heap/CopyVisitor.cpp
+++ b/Source/JavaScriptCore/heap/CopyVisitor.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2012, 2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -28,40 +28,24 @@
#include "CopiedSpaceInlines.h"
#include "CopyVisitorInlines.h"
-#include "CopyWorkList.h"
-#include "GCThreadSharedData.h"
-#include "JSCell.h"
-#include "JSObject.h"
-#include "Operations.h"
-#include <wtf/Threading.h>
namespace JSC {
-CopyVisitor::CopyVisitor(GCThreadSharedData& shared)
- : m_shared(shared)
+CopyVisitor::CopyVisitor(Heap& heap)
+ : m_heap(heap)
{
+ ASSERT(!m_copiedAllocator.isValid());
+ CopiedBlock* block = nullptr;
+ m_heap.m_storageSpace.doneFillingBlock(nullptr, &block);
+ m_copiedAllocator.setCurrentBlock(block);
}
-void CopyVisitor::copyFromShared()
+CopyVisitor::~CopyVisitor()
{
- size_t next, end;
- m_shared.getNextBlocksToCopy(next, end);
- while (next < end) {
- for (; next < end; ++next) {
- CopiedBlock* block = m_shared.m_blocksToCopy[next];
- if (!block->hasWorkList())
- continue;
-
- CopyWorkList& workList = block->workList();
- for (CopyWorkList::iterator it = workList.begin(); it != workList.end(); ++it)
- visitItem(*it);
-
- ASSERT(!block->liveBytes());
- m_shared.m_copiedSpace->recycleEvacuatedBlock(block, m_shared.m_vm->heap.operationInProgress());
- }
- m_shared.getNextBlocksToCopy(next, end);
- }
- ASSERT(next == end);
+ if (m_copiedAllocator.isValid())
+ m_heap.m_storageSpace.doneFillingBlock(m_copiedAllocator.resetCurrentBlock(), nullptr);
+
+ WTF::releaseFastMallocFreeMemoryForThisThread();
}
} // namespace JSC