Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(65)

Unified Diff: src/heap/heap.cc

Issue 1306213002: Revert of Concurrently unmap free pages. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/heap/heap.h ('k') | src/heap/mark-compact.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap/heap.cc
diff --git a/src/heap/heap.cc b/src/heap/heap.cc
index 7f4d539b057f64c7e275c3c2c9c77f143d27f148..e36e2f8f08f14e5a48e18e3949c0021030a017c5 100644
--- a/src/heap/heap.cc
+++ b/src/heap/heap.cc
@@ -135,7 +135,6 @@
current_gc_flags_(Heap::kNoGCFlags),
external_string_table_(this),
chunks_queued_for_free_(NULL),
- pending_unmap_job_semaphore_(0),
gc_callbacks_depth_(0),
deserialization_complete_(false),
concurrent_sweeping_enabled_(false),
@@ -6563,33 +6562,6 @@
}
-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_unmap_job_semaphore_.Signal();
- }
-
- Heap* heap_;
- MemoryChunk* head_;
-
- DISALLOW_COPY_AND_ASSIGN(UnmapFreeMemoryTask);
-};
-
-
-void Heap::WaitUntilUnmappingOfFreeChunksCompleted() {
- // We start an unmap job after sweeping and after compaction.
- pending_unmap_job_semaphore_.Wait();
- pending_unmap_job_semaphore_.Wait();
-}
-
-
void Heap::QueueMemoryChunkForFree(MemoryChunk* chunk) {
chunk->set_next_chunk(chunks_queued_for_free_);
chunks_queued_for_free_ = chunk;
@@ -6604,32 +6576,19 @@
next = chunk->next_chunk();
chunk->SetFlag(MemoryChunk::ABOUT_TO_BE_FREED);
}
- store_buffer()->Compact();
- store_buffer()->Filter(MemoryChunk::ABOUT_TO_BE_FREED);
+ isolate_->heap()->store_buffer()->Compact();
+ isolate_->heap()->store_buffer()->Filter(MemoryChunk::ABOUT_TO_BE_FREED);
}
void Heap::FreeQueuedChunks() {
- if (chunks_queued_for_free_ != NULL) {
- V8::GetCurrentPlatform()->CallOnBackgroundThread(
- new UnmapFreeMemoryTask(this, chunks_queued_for_free_),
- v8::Platform::kShortRunningTask);
- chunks_queued_for_free_ = NULL;
- } else {
- // If we do not have anything to unmap, we just signal the semaphore
- // that we are done.
- pending_unmap_job_semaphore_.Signal();
- }
-}
-
-
-void Heap::FreeQueuedChunks(MemoryChunk* list_head) {
MemoryChunk* next;
MemoryChunk* chunk;
- for (chunk = list_head; chunk != NULL; chunk = next) {
+ for (chunk = chunks_queued_for_free_; chunk != NULL; chunk = next) {
next = chunk->next_chunk();
isolate_->memory_allocator()->Free(chunk);
}
+ chunks_queued_for_free_ = NULL;
}
« no previous file with comments | « src/heap/heap.h ('k') | src/heap/mark-compact.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698