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/v8.h" | 5 #include "src/v8.h" |
6 | 6 |
7 #include "src/heap/incremental-marking.h" | 7 #include "src/heap/incremental-marking.h" |
8 | 8 |
9 #include "src/code-stubs.h" | 9 #include "src/code-stubs.h" |
10 #include "src/compilation-cache.h" | 10 #include "src/compilation-cache.h" |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 if (is_marking) { | 296 if (is_marking) { |
297 chunk->SetFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); | 297 chunk->SetFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); |
298 chunk->SetFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); | 298 chunk->SetFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); |
299 | 299 |
300 // It's difficult to filter out slots recorded for large objects. | 300 // It's difficult to filter out slots recorded for large objects. |
301 if (chunk->owner()->identity() == LO_SPACE && | 301 if (chunk->owner()->identity() == LO_SPACE && |
302 chunk->size() > static_cast<size_t>(Page::kPageSize) && is_compacting) { | 302 chunk->size() > static_cast<size_t>(Page::kPageSize) && is_compacting) { |
303 chunk->SetFlag(MemoryChunk::RESCAN_ON_EVACUATION); | 303 chunk->SetFlag(MemoryChunk::RESCAN_ON_EVACUATION); |
304 } | 304 } |
305 } else if (chunk->owner()->identity() == CELL_SPACE || | 305 } else if (chunk->owner()->identity() == CELL_SPACE || |
306 chunk->owner()->identity() == PROPERTY_CELL_SPACE || | |
307 chunk->scan_on_scavenge()) { | 306 chunk->scan_on_scavenge()) { |
308 chunk->ClearFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); | 307 chunk->ClearFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); |
309 chunk->ClearFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); | 308 chunk->ClearFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); |
310 } else { | 309 } else { |
311 chunk->ClearFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); | 310 chunk->ClearFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); |
312 chunk->SetFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); | 311 chunk->SetFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); |
313 } | 312 } |
314 } | 313 } |
315 | 314 |
316 | 315 |
(...skipping 25 matching lines...) Expand all Loading... |
342 while (it.has_next()) { | 341 while (it.has_next()) { |
343 NewSpacePage* p = it.next(); | 342 NewSpacePage* p = it.next(); |
344 SetNewSpacePageFlags(p, false); | 343 SetNewSpacePageFlags(p, false); |
345 } | 344 } |
346 } | 345 } |
347 | 346 |
348 | 347 |
349 void IncrementalMarking::DeactivateIncrementalWriteBarrier() { | 348 void IncrementalMarking::DeactivateIncrementalWriteBarrier() { |
350 DeactivateIncrementalWriteBarrierForSpace(heap_->old_space()); | 349 DeactivateIncrementalWriteBarrierForSpace(heap_->old_space()); |
351 DeactivateIncrementalWriteBarrierForSpace(heap_->cell_space()); | 350 DeactivateIncrementalWriteBarrierForSpace(heap_->cell_space()); |
352 DeactivateIncrementalWriteBarrierForSpace(heap_->property_cell_space()); | |
353 DeactivateIncrementalWriteBarrierForSpace(heap_->map_space()); | 351 DeactivateIncrementalWriteBarrierForSpace(heap_->map_space()); |
354 DeactivateIncrementalWriteBarrierForSpace(heap_->code_space()); | 352 DeactivateIncrementalWriteBarrierForSpace(heap_->code_space()); |
355 DeactivateIncrementalWriteBarrierForSpace(heap_->new_space()); | 353 DeactivateIncrementalWriteBarrierForSpace(heap_->new_space()); |
356 | 354 |
357 LargePage* lop = heap_->lo_space()->first_page(); | 355 LargePage* lop = heap_->lo_space()->first_page(); |
358 while (lop->is_valid()) { | 356 while (lop->is_valid()) { |
359 SetOldSpacePageFlags(lop, false, false); | 357 SetOldSpacePageFlags(lop, false, false); |
360 lop = lop->next_page(); | 358 lop = lop->next_page(); |
361 } | 359 } |
362 } | 360 } |
(...skipping 13 matching lines...) Expand all Loading... |
376 while (it.has_next()) { | 374 while (it.has_next()) { |
377 NewSpacePage* p = it.next(); | 375 NewSpacePage* p = it.next(); |
378 SetNewSpacePageFlags(p, true); | 376 SetNewSpacePageFlags(p, true); |
379 } | 377 } |
380 } | 378 } |
381 | 379 |
382 | 380 |
383 void IncrementalMarking::ActivateIncrementalWriteBarrier() { | 381 void IncrementalMarking::ActivateIncrementalWriteBarrier() { |
384 ActivateIncrementalWriteBarrier(heap_->old_space()); | 382 ActivateIncrementalWriteBarrier(heap_->old_space()); |
385 ActivateIncrementalWriteBarrier(heap_->cell_space()); | 383 ActivateIncrementalWriteBarrier(heap_->cell_space()); |
386 ActivateIncrementalWriteBarrier(heap_->property_cell_space()); | |
387 ActivateIncrementalWriteBarrier(heap_->map_space()); | 384 ActivateIncrementalWriteBarrier(heap_->map_space()); |
388 ActivateIncrementalWriteBarrier(heap_->code_space()); | 385 ActivateIncrementalWriteBarrier(heap_->code_space()); |
389 ActivateIncrementalWriteBarrier(heap_->new_space()); | 386 ActivateIncrementalWriteBarrier(heap_->new_space()); |
390 | 387 |
391 LargePage* lop = heap_->lo_space()->first_page(); | 388 LargePage* lop = heap_->lo_space()->first_page(); |
392 while (lop->is_valid()) { | 389 while (lop->is_valid()) { |
393 SetOldSpacePageFlags(lop, true, is_compacting_); | 390 SetOldSpacePageFlags(lop, true, is_compacting_); |
394 lop = lop->next_page(); | 391 lop = lop->next_page(); |
395 } | 392 } |
396 } | 393 } |
(...skipping 619 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1016 void IncrementalMarking::IncrementIdleMarkingDelayCounter() { | 1013 void IncrementalMarking::IncrementIdleMarkingDelayCounter() { |
1017 idle_marking_delay_counter_++; | 1014 idle_marking_delay_counter_++; |
1018 } | 1015 } |
1019 | 1016 |
1020 | 1017 |
1021 void IncrementalMarking::ClearIdleMarkingDelayCounter() { | 1018 void IncrementalMarking::ClearIdleMarkingDelayCounter() { |
1022 idle_marking_delay_counter_ = 0; | 1019 idle_marking_delay_counter_ = 0; |
1023 } | 1020 } |
1024 } | 1021 } |
1025 } // namespace v8::internal | 1022 } // namespace v8::internal |
OLD | NEW |