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 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 if (is_marking) { | 306 if (is_marking) { |
307 chunk->SetFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); | 307 chunk->SetFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); |
308 chunk->SetFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); | 308 chunk->SetFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); |
309 | 309 |
310 // It's difficult to filter out slots recorded for large objects. | 310 // It's difficult to filter out slots recorded for large objects. |
311 if (chunk->owner()->identity() == LO_SPACE && | 311 if (chunk->owner()->identity() == LO_SPACE && |
312 chunk->size() > static_cast<size_t>(Page::kPageSize) && is_compacting) { | 312 chunk->size() > static_cast<size_t>(Page::kPageSize) && is_compacting) { |
313 chunk->SetFlag(MemoryChunk::RESCAN_ON_EVACUATION); | 313 chunk->SetFlag(MemoryChunk::RESCAN_ON_EVACUATION); |
314 } | 314 } |
315 } else if (chunk->owner()->identity() == CELL_SPACE || | 315 } else if (chunk->owner()->identity() == CELL_SPACE || |
316 chunk->owner()->identity() == PROPERTY_CELL_SPACE || | |
317 chunk->scan_on_scavenge()) { | 316 chunk->scan_on_scavenge()) { |
318 chunk->ClearFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); | 317 chunk->ClearFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); |
319 chunk->ClearFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); | 318 chunk->ClearFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); |
320 } else { | 319 } else { |
321 chunk->ClearFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); | 320 chunk->ClearFlag(MemoryChunk::POINTERS_TO_HERE_ARE_INTERESTING); |
322 chunk->SetFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); | 321 chunk->SetFlag(MemoryChunk::POINTERS_FROM_HERE_ARE_INTERESTING); |
323 } | 322 } |
324 } | 323 } |
325 | 324 |
326 | 325 |
(...skipping 26 matching lines...) Expand all Loading... |
353 NewSpacePage* p = it.next(); | 352 NewSpacePage* p = it.next(); |
354 SetNewSpacePageFlags(p, false); | 353 SetNewSpacePageFlags(p, false); |
355 } | 354 } |
356 } | 355 } |
357 | 356 |
358 | 357 |
359 void IncrementalMarking::DeactivateIncrementalWriteBarrier() { | 358 void IncrementalMarking::DeactivateIncrementalWriteBarrier() { |
360 DeactivateIncrementalWriteBarrierForSpace(heap_->old_pointer_space()); | 359 DeactivateIncrementalWriteBarrierForSpace(heap_->old_pointer_space()); |
361 DeactivateIncrementalWriteBarrierForSpace(heap_->old_data_space()); | 360 DeactivateIncrementalWriteBarrierForSpace(heap_->old_data_space()); |
362 DeactivateIncrementalWriteBarrierForSpace(heap_->cell_space()); | 361 DeactivateIncrementalWriteBarrierForSpace(heap_->cell_space()); |
363 DeactivateIncrementalWriteBarrierForSpace(heap_->property_cell_space()); | |
364 DeactivateIncrementalWriteBarrierForSpace(heap_->map_space()); | 362 DeactivateIncrementalWriteBarrierForSpace(heap_->map_space()); |
365 DeactivateIncrementalWriteBarrierForSpace(heap_->code_space()); | 363 DeactivateIncrementalWriteBarrierForSpace(heap_->code_space()); |
366 DeactivateIncrementalWriteBarrierForSpace(heap_->new_space()); | 364 DeactivateIncrementalWriteBarrierForSpace(heap_->new_space()); |
367 | 365 |
368 LargePage* lop = heap_->lo_space()->first_page(); | 366 LargePage* lop = heap_->lo_space()->first_page(); |
369 while (lop->is_valid()) { | 367 while (lop->is_valid()) { |
370 SetOldSpacePageFlags(lop, false, false); | 368 SetOldSpacePageFlags(lop, false, false); |
371 lop = lop->next_page(); | 369 lop = lop->next_page(); |
372 } | 370 } |
373 } | 371 } |
(...skipping 14 matching lines...) Expand all Loading... |
388 NewSpacePage* p = it.next(); | 386 NewSpacePage* p = it.next(); |
389 SetNewSpacePageFlags(p, true); | 387 SetNewSpacePageFlags(p, true); |
390 } | 388 } |
391 } | 389 } |
392 | 390 |
393 | 391 |
394 void IncrementalMarking::ActivateIncrementalWriteBarrier() { | 392 void IncrementalMarking::ActivateIncrementalWriteBarrier() { |
395 ActivateIncrementalWriteBarrier(heap_->old_pointer_space()); | 393 ActivateIncrementalWriteBarrier(heap_->old_pointer_space()); |
396 ActivateIncrementalWriteBarrier(heap_->old_data_space()); | 394 ActivateIncrementalWriteBarrier(heap_->old_data_space()); |
397 ActivateIncrementalWriteBarrier(heap_->cell_space()); | 395 ActivateIncrementalWriteBarrier(heap_->cell_space()); |
398 ActivateIncrementalWriteBarrier(heap_->property_cell_space()); | |
399 ActivateIncrementalWriteBarrier(heap_->map_space()); | 396 ActivateIncrementalWriteBarrier(heap_->map_space()); |
400 ActivateIncrementalWriteBarrier(heap_->code_space()); | 397 ActivateIncrementalWriteBarrier(heap_->code_space()); |
401 ActivateIncrementalWriteBarrier(heap_->new_space()); | 398 ActivateIncrementalWriteBarrier(heap_->new_space()); |
402 | 399 |
403 LargePage* lop = heap_->lo_space()->first_page(); | 400 LargePage* lop = heap_->lo_space()->first_page(); |
404 while (lop->is_valid()) { | 401 while (lop->is_valid()) { |
405 SetOldSpacePageFlags(lop, true, is_compacting_); | 402 SetOldSpacePageFlags(lop, true, is_compacting_); |
406 lop = lop->next_page(); | 403 lop = lop->next_page(); |
407 } | 404 } |
408 } | 405 } |
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1030 void IncrementalMarking::IncrementIdleMarkingDelayCounter() { | 1027 void IncrementalMarking::IncrementIdleMarkingDelayCounter() { |
1031 idle_marking_delay_counter_++; | 1028 idle_marking_delay_counter_++; |
1032 } | 1029 } |
1033 | 1030 |
1034 | 1031 |
1035 void IncrementalMarking::ClearIdleMarkingDelayCounter() { | 1032 void IncrementalMarking::ClearIdleMarkingDelayCounter() { |
1036 idle_marking_delay_counter_ = 0; | 1033 idle_marking_delay_counter_ = 0; |
1037 } | 1034 } |
1038 } | 1035 } |
1039 } // namespace v8::internal | 1036 } // namespace v8::internal |
OLD | NEW |