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

Side by Side Diff: src/heap/concurrent-marking.cc

Issue 2888093003: [heap] Add GN flag for enabling concurrent marking. (Closed)
Patch Set: infer runtime flag from compile time flag 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
« no previous file with comments | « src/globals.h ('k') | src/heap/heap.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2017 the V8 project authors. All rights reserved. 1 // Copyright 2017 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/concurrent-marking.h" 5 #include "src/heap/concurrent-marking.h"
6 6
7 #include <stack> 7 #include <stack>
8 #include <unordered_map> 8 #include <unordered_map>
9 9
10 #include "src/heap/concurrent-marking-deque.h" 10 #include "src/heap/concurrent-marking-deque.h"
(...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 base::Semaphore* on_finish_; 229 base::Semaphore* on_finish_;
230 DISALLOW_COPY_AND_ASSIGN(Task); 230 DISALLOW_COPY_AND_ASSIGN(Task);
231 }; 231 };
232 232
233 ConcurrentMarking::ConcurrentMarking(Heap* heap, ConcurrentMarkingDeque* deque) 233 ConcurrentMarking::ConcurrentMarking(Heap* heap, ConcurrentMarkingDeque* deque)
234 : heap_(heap), 234 : heap_(heap),
235 pending_task_semaphore_(0), 235 pending_task_semaphore_(0),
236 deque_(deque), 236 deque_(deque),
237 visitor_(new ConcurrentMarkingVisitor(deque_)), 237 visitor_(new ConcurrentMarkingVisitor(deque_)),
238 is_task_pending_(false) { 238 is_task_pending_(false) {
239 // Concurrent marking does not work with double unboxing.
240 STATIC_ASSERT(!(V8_CONCURRENT_MARKING && V8_DOUBLE_FIELDS_UNBOXING));
241 // The runtime flag should be set only if the compile time flag was set. 239 // The runtime flag should be set only if the compile time flag was set.
242 CHECK(!FLAG_concurrent_marking || V8_CONCURRENT_MARKING); 240 #ifndef V8_CONCURRENT_MARKING
241 CHECK(!FLAG_concurrent_marking);
242 #endif
243 } 243 }
244 244
245 ConcurrentMarking::~ConcurrentMarking() { delete visitor_; } 245 ConcurrentMarking::~ConcurrentMarking() { delete visitor_; }
246 246
247 void ConcurrentMarking::Run() { 247 void ConcurrentMarking::Run() {
248 double time_ms = heap_->MonotonicallyIncreasingTimeInMs(); 248 double time_ms = heap_->MonotonicallyIncreasingTimeInMs();
249 size_t bytes_marked = 0; 249 size_t bytes_marked = 0;
250 base::Mutex* relocation_mutex = heap_->relocation_mutex(); 250 base::Mutex* relocation_mutex = heap_->relocation_mutex();
251 { 251 {
252 TimedScope scope(&time_ms); 252 TimedScope scope(&time_ms);
(...skipping 25 matching lines...) Expand all
278 } 278 }
279 279
280 void ConcurrentMarking::EnsureTaskCompleted() { 280 void ConcurrentMarking::EnsureTaskCompleted() {
281 if (IsTaskPending()) { 281 if (IsTaskPending()) {
282 WaitForTaskToComplete(); 282 WaitForTaskToComplete();
283 } 283 }
284 } 284 }
285 285
286 } // namespace internal 286 } // namespace internal
287 } // namespace v8 287 } // namespace v8
OLDNEW
« no previous file with comments | « src/globals.h ('k') | src/heap/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698