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 740 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 // Removes all the slots in the slot buffers that are within the given | 751 // Removes all the slots in the slot buffers that are within the given |
752 // address range. | 752 // address range. |
753 void RemoveObjectSlots(Address start_slot, Address end_slot); | 753 void RemoveObjectSlots(Address start_slot, Address end_slot); |
754 | 754 |
755 private: | 755 private: |
756 class SweeperTask; | 756 class SweeperTask; |
757 | 757 |
758 explicit MarkCompactCollector(Heap* heap); | 758 explicit MarkCompactCollector(Heap* heap); |
759 ~MarkCompactCollector(); | 759 ~MarkCompactCollector(); |
760 | 760 |
761 void RemoveDeoptimizedCodeSlots(); | |
762 bool WillBeDeoptimized(Code* code); | 761 bool WillBeDeoptimized(Code* code); |
763 void RemoveDeadInvalidatedCode(); | |
764 void ProcessInvalidatedCode(ObjectVisitor* visitor); | |
765 void EvictPopularEvacuationCandidate(Page* page); | 762 void EvictPopularEvacuationCandidate(Page* page); |
766 void ClearInvalidSlotsBufferEntries(PagedSpace* space); | 763 void ClearInvalidSlotsBufferEntries(PagedSpace* space); |
767 void ClearInvalidStoreAndSlotsBufferEntries(); | 764 void ClearInvalidStoreAndSlotsBufferEntries(); |
768 | 765 |
769 void StartSweeperThreads(); | 766 void StartSweeperThreads(); |
770 | 767 |
771 #ifdef DEBUG | 768 #ifdef DEBUG |
772 enum CollectorState { | 769 enum CollectorState { |
773 IDLE, | 770 IDLE, |
774 PREPARE_GC, | 771 PREPARE_GC, |
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
971 #endif | 968 #endif |
972 | 969 |
973 Heap* heap_; | 970 Heap* heap_; |
974 base::VirtualMemory* marking_deque_memory_; | 971 base::VirtualMemory* marking_deque_memory_; |
975 size_t marking_deque_memory_committed_; | 972 size_t marking_deque_memory_committed_; |
976 MarkingDeque marking_deque_; | 973 MarkingDeque marking_deque_; |
977 CodeFlusher* code_flusher_; | 974 CodeFlusher* code_flusher_; |
978 bool have_code_to_deoptimize_; | 975 bool have_code_to_deoptimize_; |
979 | 976 |
980 List<Page*> evacuation_candidates_; | 977 List<Page*> evacuation_candidates_; |
981 List<Code*> invalidated_code_; | |
982 | 978 |
983 base::SmartPointer<FreeList> free_list_old_space_; | 979 base::SmartPointer<FreeList> free_list_old_space_; |
984 base::SmartPointer<FreeList> free_list_code_space_; | 980 base::SmartPointer<FreeList> free_list_code_space_; |
985 | 981 |
986 friend class Heap; | 982 friend class Heap; |
987 }; | 983 }; |
988 | 984 |
989 | 985 |
990 class MarkBitCellIterator BASE_EMBEDDED { | 986 class MarkBitCellIterator BASE_EMBEDDED { |
991 public: | 987 public: |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1040 private: | 1036 private: |
1041 MarkCompactCollector* collector_; | 1037 MarkCompactCollector* collector_; |
1042 }; | 1038 }; |
1043 | 1039 |
1044 | 1040 |
1045 const char* AllocationSpaceName(AllocationSpace space); | 1041 const char* AllocationSpaceName(AllocationSpace space); |
1046 } | 1042 } |
1047 } // namespace v8::internal | 1043 } // namespace v8::internal |
1048 | 1044 |
1049 #endif // V8_HEAP_MARK_COMPACT_H_ | 1045 #endif // V8_HEAP_MARK_COMPACT_H_ |
OLD | NEW |