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

Side by Side Diff: src/heap/incremental-marking.h

Issue 1265423002: Use idle task to perform incremental marking steps. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Add tracing 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 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 #ifndef V8_HEAP_INCREMENTAL_MARKING_H_ 5 #ifndef V8_HEAP_INCREMENTAL_MARKING_H_
6 #define V8_HEAP_INCREMENTAL_MARKING_H_ 6 #define V8_HEAP_INCREMENTAL_MARKING_H_
7 7
8 8
9 #include "src/cancelable-task.h"
9 #include "src/execution.h" 10 #include "src/execution.h"
10 #include "src/heap/mark-compact.h" 11 #include "src/heap/mark-compact.h"
11 #include "src/objects.h" 12 #include "src/objects.h"
12 13
13 namespace v8 { 14 namespace v8 {
14 namespace internal { 15 namespace internal {
15 16
16 17
17 class IncrementalMarking { 18 class IncrementalMarking {
18 public: 19 public:
(...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 void ClearIdleMarkingDelayCounter(); 198 void ClearIdleMarkingDelayCounter();
198 199
199 bool IsIdleMarkingDelayCounterLimitReached(); 200 bool IsIdleMarkingDelayCounterLimitReached();
200 201
201 INLINE(static void MarkObject(Heap* heap, HeapObject* object)); 202 INLINE(static void MarkObject(Heap* heap, HeapObject* object));
202 203
203 Heap* heap() const { return heap_; } 204 Heap* heap() const { return heap_; }
204 205
205 GCCallbackFlags CallbackFlags() const { return gc_callback_flags_; } 206 GCCallbackFlags CallbackFlags() const { return gc_callback_flags_; }
206 207
208 void ScheduleIncrementalMarkingTask();
209 void NotifyIncrementalMarkingTaskRunning();
210 bool IsIncrementalMarkingTaskPending() {
211 return pending_incremental_marking_task_;
212 }
213
207 private: 214 private:
208 int64_t SpaceLeftInOldSpace(); 215 int64_t SpaceLeftInOldSpace();
209 216
210 void SpeedUp(); 217 void SpeedUp();
211 218
212 void ResetStepCounters(); 219 void ResetStepCounters();
213 220
214 void StartMarking(); 221 void StartMarking();
215 222
216 void ActivateIncrementalWriteBarrier(PagedSpace* space); 223 void ActivateIncrementalWriteBarrier(PagedSpace* space);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
257 bool was_activated_; 264 bool was_activated_;
258 265
259 bool weak_closure_was_overapproximated_; 266 bool weak_closure_was_overapproximated_;
260 267
261 int weak_closure_approximation_rounds_; 268 int weak_closure_approximation_rounds_;
262 269
263 GCRequestType request_type_; 270 GCRequestType request_type_;
264 271
265 GCCallbackFlags gc_callback_flags_; 272 GCCallbackFlags gc_callback_flags_;
266 273
274 bool pending_incremental_marking_task_;
275
267 DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalMarking); 276 DISALLOW_IMPLICIT_CONSTRUCTORS(IncrementalMarking);
268 }; 277 };
278
279
280 class IncrementalMarkingTask : public CancelableIdleTask {
281 public:
282 explicit IncrementalMarkingTask(Isolate* isolate)
283 : CancelableIdleTask(isolate) {}
284 // CancelableIdleTask overrides.
285 void RunInternal(double deadline_in_seconds) override;
286 enum Progress { kDone, kMoreWork };
287 static Progress Step(Heap* heap, double deadline_in_ms);
288 };
269 } 289 }
270 } // namespace v8::internal 290 } // namespace v8::internal
271 291
272 #endif // V8_HEAP_INCREMENTAL_MARKING_H_ 292 #endif // V8_HEAP_INCREMENTAL_MARKING_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698