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/base/atomicops.h" | 7 #include "src/base/atomicops.h" |
8 #include "src/code-stubs.h" | 8 #include "src/code-stubs.h" |
9 #include "src/compilation-cache.h" | 9 #include "src/compilation-cache.h" |
10 #include "src/cpu-profiler.h" | 10 #include "src/cpu-profiler.h" |
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
640 space->AddToAccountingStats(freed_bytes); | 640 space->AddToAccountingStats(freed_bytes); |
641 space->DecrementUnsweptFreeBytes(freed_bytes); | 641 space->DecrementUnsweptFreeBytes(freed_bytes); |
642 } | 642 } |
643 | 643 |
644 | 644 |
645 bool MarkCompactCollector::AreSweeperThreadsActivated() { | 645 bool MarkCompactCollector::AreSweeperThreadsActivated() { |
646 return isolate()->sweeper_threads() != NULL || FLAG_job_based_sweeping; | 646 return isolate()->sweeper_threads() != NULL || FLAG_job_based_sweeping; |
647 } | 647 } |
648 | 648 |
649 | 649 |
650 bool MarkCompactCollector::IsConcurrentSweepingInProgress() { | 650 bool MarkCompactCollector::IsConcurrentSweepingInProgress(PagedSpace* space) { |
651 return sweeping_pending_; | 651 return (space == NULL || space->was_swept_concurrently()) && |
| 652 sweeping_pending_; |
652 } | 653 } |
653 | 654 |
654 | 655 |
655 void Marking::TransferMark(Address old_start, Address new_start) { | 656 void Marking::TransferMark(Address old_start, Address new_start) { |
656 // This is only used when resizing an object. | 657 // This is only used when resizing an object. |
657 ASSERT(MemoryChunk::FromAddress(old_start) == | 658 ASSERT(MemoryChunk::FromAddress(old_start) == |
658 MemoryChunk::FromAddress(new_start)); | 659 MemoryChunk::FromAddress(new_start)); |
659 | 660 |
660 if (!heap_->incremental_marking()->IsMarking()) return; | 661 if (!heap_->incremental_marking()->IsMarking()) return; |
661 | 662 |
(...skipping 3412 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4074 } | 4075 } |
4075 if (p == space->end_of_unswept_pages()) break; | 4076 if (p == space->end_of_unswept_pages()) break; |
4076 } | 4077 } |
4077 } | 4078 } |
4078 | 4079 |
4079 | 4080 |
4080 void MarkCompactCollector::SweepSpace(PagedSpace* space, SweeperType sweeper) { | 4081 void MarkCompactCollector::SweepSpace(PagedSpace* space, SweeperType sweeper) { |
4081 space->set_was_swept_conservatively(sweeper == CONSERVATIVE || | 4082 space->set_was_swept_conservatively(sweeper == CONSERVATIVE || |
4082 sweeper == PARALLEL_CONSERVATIVE || | 4083 sweeper == PARALLEL_CONSERVATIVE || |
4083 sweeper == CONCURRENT_CONSERVATIVE); | 4084 sweeper == CONCURRENT_CONSERVATIVE); |
| 4085 space->set_was_swept_concurrently(sweeper == CONCURRENT_CONSERVATIVE); |
4084 space->ClearStats(); | 4086 space->ClearStats(); |
4085 | 4087 |
4086 // We defensively initialize end_of_unswept_pages_ here with the first page | 4088 // We defensively initialize end_of_unswept_pages_ here with the first page |
4087 // of the pages list. | 4089 // of the pages list. |
4088 space->set_end_of_unswept_pages(space->FirstPage()); | 4090 space->set_end_of_unswept_pages(space->FirstPage()); |
4089 | 4091 |
4090 PageIterator it(space); | 4092 PageIterator it(space); |
4091 | 4093 |
4092 int pages_swept = 0; | 4094 int pages_swept = 0; |
4093 bool unused_page_present = false; | 4095 bool unused_page_present = false; |
(...skipping 395 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4489 while (buffer != NULL) { | 4491 while (buffer != NULL) { |
4490 SlotsBuffer* next_buffer = buffer->next(); | 4492 SlotsBuffer* next_buffer = buffer->next(); |
4491 DeallocateBuffer(buffer); | 4493 DeallocateBuffer(buffer); |
4492 buffer = next_buffer; | 4494 buffer = next_buffer; |
4493 } | 4495 } |
4494 *buffer_address = NULL; | 4496 *buffer_address = NULL; |
4495 } | 4497 } |
4496 | 4498 |
4497 | 4499 |
4498 } } // namespace v8::internal | 4500 } } // namespace v8::internal |
OLD | NEW |