| OLD | NEW |
| 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/incremental-marking.h" | 5 #include "src/heap/incremental-marking.h" |
| 6 | 6 |
| 7 #include "src/code-stubs.h" | 7 #include "src/code-stubs.h" |
| 8 #include "src/compilation-cache.h" | 8 #include "src/compilation-cache.h" |
| 9 #include "src/conversions.h" | 9 #include "src/conversions.h" |
| 10 #include "src/heap/gc-idle-time-handler.h" | 10 #include "src/heap/gc-idle-time-handler.h" |
| (...skipping 1183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1194 | 1194 |
| 1195 bytes_scanned_ += bytes_to_process; | 1195 bytes_scanned_ += bytes_to_process; |
| 1196 | 1196 |
| 1197 // TODO(hpayer): Do not account for sweeping finalization while marking. | 1197 // TODO(hpayer): Do not account for sweeping finalization while marking. |
| 1198 if (state_ == SWEEPING) { | 1198 if (state_ == SWEEPING) { |
| 1199 FinalizeSweeping(); | 1199 FinalizeSweeping(); |
| 1200 } | 1200 } |
| 1201 | 1201 |
| 1202 if (state_ == MARKING) { | 1202 if (state_ == MARKING) { |
| 1203 bytes_processed = ProcessMarkingDeque(bytes_to_process); | 1203 bytes_processed = ProcessMarkingDeque(bytes_to_process); |
| 1204 if (FLAG_incremental_marking_wrappers && |
| 1205 heap_->UsingEmbedderHeapTracer()) { |
| 1206 // This currently marks through all registered wrappers and does not |
| 1207 // respect bytes_to_process. |
| 1208 // TODO(hpayer): Integrate incremental marking of wrappers into |
| 1209 // bytes_to_process logic. |
| 1210 heap_->mark_compact_collector() |
| 1211 ->RegisterWrappersWithEmbedderHeapTracer(); |
| 1212 heap_->mark_compact_collector()->embedder_heap_tracer()->AdvanceTracing( |
| 1213 0, |
| 1214 EmbedderHeapTracer::AdvanceTracingActions( |
| 1215 EmbedderHeapTracer::ForceCompletionAction::FORCE_COMPLETION)); |
| 1216 } |
| 1204 if (heap_->mark_compact_collector()->marking_deque()->IsEmpty()) { | 1217 if (heap_->mark_compact_collector()->marking_deque()->IsEmpty()) { |
| 1205 if (completion == FORCE_COMPLETION || | 1218 if (completion == FORCE_COMPLETION || |
| 1206 IsIdleMarkingDelayCounterLimitReached()) { | 1219 IsIdleMarkingDelayCounterLimitReached()) { |
| 1207 if (!finalize_marking_completed_) { | 1220 if (!finalize_marking_completed_) { |
| 1208 FinalizeMarking(action); | 1221 FinalizeMarking(action); |
| 1209 } else { | 1222 } else { |
| 1210 MarkingComplete(action); | 1223 MarkingComplete(action); |
| 1211 } | 1224 } |
| 1212 } else { | 1225 } else { |
| 1213 IncrementIdleMarkingDelayCounter(); | 1226 IncrementIdleMarkingDelayCounter(); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1258 void IncrementalMarking::IncrementIdleMarkingDelayCounter() { | 1271 void IncrementalMarking::IncrementIdleMarkingDelayCounter() { |
| 1259 idle_marking_delay_counter_++; | 1272 idle_marking_delay_counter_++; |
| 1260 } | 1273 } |
| 1261 | 1274 |
| 1262 | 1275 |
| 1263 void IncrementalMarking::ClearIdleMarkingDelayCounter() { | 1276 void IncrementalMarking::ClearIdleMarkingDelayCounter() { |
| 1264 idle_marking_delay_counter_ = 0; | 1277 idle_marking_delay_counter_ = 0; |
| 1265 } | 1278 } |
| 1266 } // namespace internal | 1279 } // namespace internal |
| 1267 } // namespace v8 | 1280 } // namespace v8 |
| OLD | NEW |