| 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 |