| 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 #ifndef V8_HEAP_MARK_COMPACT_H_ | 5 #ifndef V8_HEAP_MARK_COMPACT_H_ |
| 6 #define V8_HEAP_MARK_COMPACT_H_ | 6 #define V8_HEAP_MARK_COMPACT_H_ |
| 7 | 7 |
| 8 #include "src/base/bits.h" | 8 #include "src/base/bits.h" |
| 9 #include "src/heap/spaces.h" | 9 #include "src/heap/spaces.h" |
| 10 | 10 |
| (...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 | 459 |
| 460 void EnsureSweepingCompleted(); | 460 void EnsureSweepingCompleted(); |
| 461 | 461 |
| 462 void SweepOrWaitUntilSweepingCompleted(Page* page); | 462 void SweepOrWaitUntilSweepingCompleted(Page* page); |
| 463 | 463 |
| 464 // If sweeper threads are not active this method will return true. If | 464 // If sweeper threads are not active this method will return true. If |
| 465 // this is a latency issue we should be smarter here. Otherwise, it will | 465 // this is a latency issue we should be smarter here. Otherwise, it will |
| 466 // return true if the sweeper threads are done processing the pages. | 466 // return true if the sweeper threads are done processing the pages. |
| 467 bool IsSweepingCompleted(); | 467 bool IsSweepingCompleted(); |
| 468 | 468 |
| 469 void RefillFreeList(PagedSpace* space); | |
| 470 | |
| 471 // Checks if sweeping is in progress right now on any space. | 469 // Checks if sweeping is in progress right now on any space. |
| 472 bool sweeping_in_progress() { return sweeping_in_progress_; } | 470 bool sweeping_in_progress() { return sweeping_in_progress_; } |
| 473 | 471 |
| 474 void set_evacuation(bool evacuation) { evacuation_ = evacuation; } | 472 void set_evacuation(bool evacuation) { evacuation_ = evacuation; } |
| 475 | 473 |
| 476 bool evacuation() const { return evacuation_; } | 474 bool evacuation() const { return evacuation_; } |
| 477 | 475 |
| 478 // Special case for processing weak references in a full collection. We need | 476 // Special case for processing weak references in a full collection. We need |
| 479 // to artificially keep AllocationSites alive for a time. | 477 // to artificially keep AllocationSites alive for a time. |
| 480 void MarkAllocationSite(AllocationSite* site); | 478 void MarkAllocationSite(AllocationSite* site); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 505 // when mark bits are still intact. | 503 // when mark bits are still intact. |
| 506 bool IsSlotInBlackObject(Page* p, Address slot, HeapObject** out_object); | 504 bool IsSlotInBlackObject(Page* p, Address slot, HeapObject** out_object); |
| 507 bool IsSlotInBlackObjectSlow(Page* p, Address slot); | 505 bool IsSlotInBlackObjectSlow(Page* p, Address slot); |
| 508 bool IsSlotInLiveObject(Address slot); | 506 bool IsSlotInLiveObject(Address slot); |
| 509 void VerifyIsSlotInLiveObject(Address slot, HeapObject* object); | 507 void VerifyIsSlotInLiveObject(Address slot, HeapObject* object); |
| 510 | 508 |
| 511 // Removes all the slots in the slot buffers that are within the given | 509 // Removes all the slots in the slot buffers that are within the given |
| 512 // address range. | 510 // address range. |
| 513 void RemoveObjectSlots(Address start_slot, Address end_slot); | 511 void RemoveObjectSlots(Address start_slot, Address end_slot); |
| 514 | 512 |
| 513 // |
| 514 // Free lists filled by sweeper and consumed by corresponding spaces |
| 515 // (including compaction spaces). |
| 516 // |
| 517 base::SmartPointer<FreeList>& free_list_old_space() { |
| 518 return free_list_old_space_; |
| 519 } |
| 520 base::SmartPointer<FreeList>& free_list_code_space() { |
| 521 return free_list_code_space_; |
| 522 } |
| 523 base::SmartPointer<FreeList>& free_list_map_space() { |
| 524 return free_list_map_space_; |
| 525 } |
| 526 |
| 515 private: | 527 private: |
| 516 class CompactionTask; | 528 class CompactionTask; |
| 517 class SweeperTask; | 529 class SweeperTask; |
| 518 | 530 |
| 519 explicit MarkCompactCollector(Heap* heap); | 531 explicit MarkCompactCollector(Heap* heap); |
| 520 ~MarkCompactCollector(); | 532 ~MarkCompactCollector(); |
| 521 | 533 |
| 522 bool WillBeDeoptimized(Code* code); | 534 bool WillBeDeoptimized(Code* code); |
| 523 void EvictPopularEvacuationCandidate(Page* page); | 535 void EvictPopularEvacuationCandidate(Page* page); |
| 524 void ClearInvalidStoreAndSlotsBufferEntries(); | 536 void ClearInvalidStoreAndSlotsBufferEntries(); |
| (...skipping 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 847 private: | 859 private: |
| 848 MarkCompactCollector* collector_; | 860 MarkCompactCollector* collector_; |
| 849 }; | 861 }; |
| 850 | 862 |
| 851 | 863 |
| 852 const char* AllocationSpaceName(AllocationSpace space); | 864 const char* AllocationSpaceName(AllocationSpace space); |
| 853 } // namespace internal | 865 } // namespace internal |
| 854 } // namespace v8 | 866 } // namespace v8 |
| 855 | 867 |
| 856 #endif // V8_HEAP_MARK_COMPACT_H_ | 868 #endif // V8_HEAP_MARK_COMPACT_H_ |
| OLD | NEW |