Index: src/heap/heap.cc |
diff --git a/src/heap/heap.cc b/src/heap/heap.cc |
index d95da5e022519a5385e0206ca2efeeb4a2d7e829..dbda987b4490c8af83752e2c7dada24c531067ee 100644 |
--- a/src/heap/heap.cc |
+++ b/src/heap/heap.cc |
@@ -157,9 +157,6 @@ Heap::Heap() |
current_gc_flags_(Heap::kNoGCFlags), |
current_gc_callback_flags_(GCCallbackFlags::kNoGCCallbackFlags), |
external_string_table_(this), |
- chunks_queued_for_free_(NULL), |
- concurrent_unmapping_tasks_active_(0), |
- pending_unmapping_tasks_semaphore_(0), |
gc_callbacks_depth_(0), |
deserialization_complete_(false), |
strong_roots_list_(NULL), |
@@ -5447,8 +5444,6 @@ void Heap::TearDown() { |
delete scavenge_job_; |
scavenge_job_ = nullptr; |
- WaitUntilUnmappingOfFreeChunksCompleted(); |
- |
delete array_buffer_tracker_; |
array_buffer_tracker_ = nullptr; |
@@ -6254,75 +6249,6 @@ void Heap::ExternalStringTable::TearDown() { |
} |
-class Heap::UnmapFreeMemoryTask : public v8::Task { |
- public: |
- UnmapFreeMemoryTask(Heap* heap, MemoryChunk* head) |
- : heap_(heap), head_(head) {} |
- virtual ~UnmapFreeMemoryTask() {} |
- |
- private: |
- // v8::Task overrides. |
- void Run() override { |
- heap_->FreeQueuedChunks(head_); |
- heap_->pending_unmapping_tasks_semaphore_.Signal(); |
- } |
- |
- Heap* heap_; |
- MemoryChunk* head_; |
- |
- DISALLOW_COPY_AND_ASSIGN(UnmapFreeMemoryTask); |
-}; |
- |
- |
-void Heap::WaitUntilUnmappingOfFreeChunksCompleted() { |
- while (concurrent_unmapping_tasks_active_ > 0) { |
- pending_unmapping_tasks_semaphore_.Wait(); |
- concurrent_unmapping_tasks_active_--; |
- } |
-} |
- |
- |
-void Heap::QueueMemoryChunkForFree(MemoryChunk* chunk) { |
- // PreFree logically frees the memory chunk. However, the actual freeing |
- // will happen on a separate thread sometime later. |
- memory_allocator()->PreFreeMemory(chunk); |
- |
- // The chunks added to this queue will be freed by a concurrent thread. |
- chunk->set_next_chunk(chunks_queued_for_free_); |
- chunks_queued_for_free_ = chunk; |
-} |
- |
- |
-void Heap::FreeQueuedChunks() { |
- if (chunks_queued_for_free_ != NULL) { |
- if (FLAG_concurrent_sweeping) { |
- V8::GetCurrentPlatform()->CallOnBackgroundThread( |
- new UnmapFreeMemoryTask(this, chunks_queued_for_free_), |
- v8::Platform::kShortRunningTask); |
- } else { |
- FreeQueuedChunks(chunks_queued_for_free_); |
- pending_unmapping_tasks_semaphore_.Signal(); |
- } |
- chunks_queued_for_free_ = NULL; |
- } else { |
- // If we do not have anything to unmap, we just signal the semaphore |
- // that we are done. |
- pending_unmapping_tasks_semaphore_.Signal(); |
- } |
- concurrent_unmapping_tasks_active_++; |
-} |
- |
- |
-void Heap::FreeQueuedChunks(MemoryChunk* list_head) { |
- MemoryChunk* next; |
- MemoryChunk* chunk; |
- for (chunk = list_head; chunk != NULL; chunk = next) { |
- next = chunk->next_chunk(); |
- memory_allocator()->PerformFreeMemory(chunk); |
- } |
-} |
- |
- |
void Heap::RememberUnmappedPage(Address page, bool compacted) { |
uintptr_t p = reinterpret_cast<uintptr_t>(page); |
// Tag the page pointer to make it findable in the dump file. |