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

Side by Side Diff: src/heap/heap.cc

Issue 2810893002: [heap] Implement simple concurrent marking deque. (Closed)
Patch Set: rebase Created 3 years, 7 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 unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/heap/heap.h" 5 #include "src/heap/heap.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api.h" 8 #include "src/api.h"
9 #include "src/assembler-inl.h" 9 #include "src/assembler-inl.h"
10 #include "src/ast/context-slot-cache.h" 10 #include "src/ast/context-slot-cache.h"
11 #include "src/base/bits.h" 11 #include "src/base/bits.h"
12 #include "src/base/once.h" 12 #include "src/base/once.h"
13 #include "src/base/utils/random-number-generator.h" 13 #include "src/base/utils/random-number-generator.h"
14 #include "src/bootstrapper.h" 14 #include "src/bootstrapper.h"
15 #include "src/codegen.h" 15 #include "src/codegen.h"
16 #include "src/compilation-cache.h" 16 #include "src/compilation-cache.h"
17 #include "src/compiler-dispatcher/optimizing-compile-dispatcher.h" 17 #include "src/compiler-dispatcher/optimizing-compile-dispatcher.h"
18 #include "src/conversions.h" 18 #include "src/conversions.h"
19 #include "src/debug/debug.h" 19 #include "src/debug/debug.h"
20 #include "src/deoptimizer.h" 20 #include "src/deoptimizer.h"
21 #include "src/feedback-vector.h" 21 #include "src/feedback-vector.h"
22 #include "src/global-handles.h" 22 #include "src/global-handles.h"
23 #include "src/heap/array-buffer-tracker-inl.h" 23 #include "src/heap/array-buffer-tracker-inl.h"
24 #include "src/heap/code-stats.h" 24 #include "src/heap/code-stats.h"
25 #include "src/heap/concurrent-marking-deque.h"
25 #include "src/heap/concurrent-marking.h" 26 #include "src/heap/concurrent-marking.h"
26 #include "src/heap/embedder-tracing.h" 27 #include "src/heap/embedder-tracing.h"
27 #include "src/heap/gc-idle-time-handler.h" 28 #include "src/heap/gc-idle-time-handler.h"
28 #include "src/heap/gc-tracer.h" 29 #include "src/heap/gc-tracer.h"
29 #include "src/heap/incremental-marking.h" 30 #include "src/heap/incremental-marking.h"
30 #include "src/heap/mark-compact-inl.h" 31 #include "src/heap/mark-compact-inl.h"
31 #include "src/heap/mark-compact.h" 32 #include "src/heap/mark-compact.h"
32 #include "src/heap/memory-reducer.h" 33 #include "src/heap/memory-reducer.h"
33 #include "src/heap/object-stats.h" 34 #include "src/heap/object-stats.h"
34 #include "src/heap/objects-visiting-inl.h" 35 #include "src/heap/objects-visiting-inl.h"
(...skipping 5452 matching lines...) Expand 10 before | Expand all | Expand 10 after
5487 5488
5488 base::CallOnce(&initialize_gc_once, &InitializeGCOnce); 5489 base::CallOnce(&initialize_gc_once, &InitializeGCOnce);
5489 5490
5490 // Set up memory allocator. 5491 // Set up memory allocator.
5491 memory_allocator_ = new MemoryAllocator(isolate_); 5492 memory_allocator_ = new MemoryAllocator(isolate_);
5492 if (!memory_allocator_->SetUp(MaxReserved(), code_range_size_)) return false; 5493 if (!memory_allocator_->SetUp(MaxReserved(), code_range_size_)) return false;
5493 5494
5494 store_buffer_ = new StoreBuffer(this); 5495 store_buffer_ = new StoreBuffer(this);
5495 5496
5496 incremental_marking_ = new IncrementalMarking(this); 5497 incremental_marking_ = new IncrementalMarking(this);
5497 concurrent_marking_ = new ConcurrentMarking(this);
5498 5498
5499 for (int i = 0; i <= LAST_SPACE; i++) { 5499 for (int i = 0; i <= LAST_SPACE; i++) {
5500 space_[i] = nullptr; 5500 space_[i] = nullptr;
5501 } 5501 }
5502 5502
5503 space_[NEW_SPACE] = new_space_ = new NewSpace(this); 5503 space_[NEW_SPACE] = new_space_ = new NewSpace(this);
5504 if (!new_space_->SetUp(initial_semispace_size_, max_semi_space_size_)) { 5504 if (!new_space_->SetUp(initial_semispace_size_, max_semi_space_size_)) {
5505 return false; 5505 return false;
5506 } 5506 }
5507 new_space_top_after_last_gc_ = new_space()->top(); 5507 new_space_top_after_last_gc_ = new_space()->top();
(...skipping 28 matching lines...) Expand all
5536 for (int i = 0; i < static_cast<int>(v8::Isolate::kUseCounterFeatureCount); 5536 for (int i = 0; i < static_cast<int>(v8::Isolate::kUseCounterFeatureCount);
5537 i++) { 5537 i++) {
5538 deferred_counters_[i] = 0; 5538 deferred_counters_[i] = 0;
5539 } 5539 }
5540 5540
5541 tracer_ = new GCTracer(this); 5541 tracer_ = new GCTracer(this);
5542 scavenge_collector_ = new Scavenger(this); 5542 scavenge_collector_ = new Scavenger(this);
5543 mark_compact_collector_ = new MarkCompactCollector(this); 5543 mark_compact_collector_ = new MarkCompactCollector(this);
5544 incremental_marking_->set_marking_deque( 5544 incremental_marking_->set_marking_deque(
5545 mark_compact_collector_->marking_deque()); 5545 mark_compact_collector_->marking_deque());
5546 concurrent_marking_ =
5547 new ConcurrentMarking(this, mark_compact_collector_->marking_deque());
5546 if (FLAG_minor_mc) 5548 if (FLAG_minor_mc)
5547 minor_mark_compact_collector_ = new MinorMarkCompactCollector(this); 5549 minor_mark_compact_collector_ = new MinorMarkCompactCollector(this);
5548 gc_idle_time_handler_ = new GCIdleTimeHandler(); 5550 gc_idle_time_handler_ = new GCIdleTimeHandler();
5549 memory_reducer_ = new MemoryReducer(this); 5551 memory_reducer_ = new MemoryReducer(this);
5550 if (V8_UNLIKELY(FLAG_gc_stats)) { 5552 if (V8_UNLIKELY(FLAG_gc_stats)) {
5551 live_object_stats_ = new ObjectStats(this); 5553 live_object_stats_ = new ObjectStats(this);
5552 dead_object_stats_ = new ObjectStats(this); 5554 dead_object_stats_ = new ObjectStats(this);
5553 } 5555 }
5554 scavenge_job_ = new ScavengeJob(); 5556 scavenge_job_ = new ScavengeJob();
5555 local_embedder_heap_tracer_ = new LocalEmbedderHeapTracer(); 5557 local_embedder_heap_tracer_ = new LocalEmbedderHeapTracer();
(...skipping 859 matching lines...) Expand 10 before | Expand all | Expand 10 after
6415 case LO_SPACE: 6417 case LO_SPACE:
6416 return "LO_SPACE"; 6418 return "LO_SPACE";
6417 default: 6419 default:
6418 UNREACHABLE(); 6420 UNREACHABLE();
6419 } 6421 }
6420 return NULL; 6422 return NULL;
6421 } 6423 }
6422 6424
6423 } // namespace internal 6425 } // namespace internal
6424 } // namespace v8 6426 } // namespace v8
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698