| 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 #include "src/heap/store-buffer.h" | 10 #include "src/heap/store-buffer.h" |
| (...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 EnsureMarkingDequeIsCommitted(max_size); | 554 EnsureMarkingDequeIsCommitted(max_size); |
| 555 InitializeMarkingDeque(); | 555 InitializeMarkingDeque(); |
| 556 } | 556 } |
| 557 } | 557 } |
| 558 | 558 |
| 559 void EnsureMarkingDequeIsCommitted(size_t max_size); | 559 void EnsureMarkingDequeIsCommitted(size_t max_size); |
| 560 void EnsureMarkingDequeIsReserved(); | 560 void EnsureMarkingDequeIsReserved(); |
| 561 | 561 |
| 562 void InitializeMarkingDeque(); | 562 void InitializeMarkingDeque(); |
| 563 | 563 |
| 564 // The following four methods can just be called after marking, when the | 564 // The following two methods can just be called after marking, when the |
| 565 // whole transitive closure is known. They must be called before sweeping | 565 // whole transitive closure is known. They must be called before sweeping |
| 566 // when mark bits are still intact. | 566 // when mark bits are still intact. |
| 567 bool IsSlotInBlackObject(Page* p, Address slot, HeapObject** out_object); | 567 bool IsSlotInBlackObject(MemoryChunk* p, Address slot); |
| 568 HeapObject* FindBlackObjectBySlotSlow(Address slot); | 568 HeapObject* FindBlackObjectBySlotSlow(Address slot); |
| 569 bool IsSlotInLiveObject(Address slot); | |
| 570 | 569 |
| 571 // Removes all the slots in the slot buffers that are within the given | 570 // Removes all the slots in the slot buffers that are within the given |
| 572 // address range. | 571 // address range. |
| 573 void RemoveObjectSlots(Address start_slot, Address end_slot); | 572 void RemoveObjectSlots(Address start_slot, Address end_slot); |
| 574 | 573 |
| 575 base::Mutex* swept_pages_mutex() { return &swept_pages_mutex_; } | 574 base::Mutex* swept_pages_mutex() { return &swept_pages_mutex_; } |
| 576 List<Page*>* swept_pages(AllocationSpace id) { | 575 List<Page*>* swept_pages(AllocationSpace id) { |
| 577 switch (id) { | 576 switch (id) { |
| 578 case OLD_SPACE: | 577 case OLD_SPACE: |
| 579 return &swept_old_space_pages_; | 578 return &swept_old_space_pages_; |
| (...skipping 296 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 876 private: | 875 private: |
| 877 MarkCompactCollector* collector_; | 876 MarkCompactCollector* collector_; |
| 878 }; | 877 }; |
| 879 | 878 |
| 880 | 879 |
| 881 const char* AllocationSpaceName(AllocationSpace space); | 880 const char* AllocationSpaceName(AllocationSpace space); |
| 882 } // namespace internal | 881 } // namespace internal |
| 883 } // namespace v8 | 882 } // namespace v8 |
| 884 | 883 |
| 885 #endif // V8_HEAP_MARK_COMPACT_H_ | 884 #endif // V8_HEAP_MARK_COMPACT_H_ |
| OLD | NEW |