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 622 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
633 enum SweepingParallelism { SWEEP_ON_MAIN_THREAD, SWEEP_IN_PARALLEL }; | 633 enum SweepingParallelism { SWEEP_ON_MAIN_THREAD, SWEEP_IN_PARALLEL }; |
634 | 634 |
635 #ifdef VERIFY_HEAP | 635 #ifdef VERIFY_HEAP |
636 void VerifyMarkbitsAreClean(); | 636 void VerifyMarkbitsAreClean(); |
637 static void VerifyMarkbitsAreClean(PagedSpace* space); | 637 static void VerifyMarkbitsAreClean(PagedSpace* space); |
638 static void VerifyMarkbitsAreClean(NewSpace* space); | 638 static void VerifyMarkbitsAreClean(NewSpace* space); |
639 void VerifyWeakEmbeddedObjectsInCode(); | 639 void VerifyWeakEmbeddedObjectsInCode(); |
640 void VerifyOmittedMapChecks(); | 640 void VerifyOmittedMapChecks(); |
641 #endif | 641 #endif |
642 | 642 |
643 INLINE(static bool ShouldSkipEvacuationSlotRecording(Object** anchor)) { | |
644 return Page::FromAddress(reinterpret_cast<Address>(anchor)) | |
645 ->ShouldSkipEvacuationSlotRecording(); | |
646 } | |
647 | |
648 INLINE(static bool ShouldSkipEvacuationSlotRecording(Object* host)) { | 643 INLINE(static bool ShouldSkipEvacuationSlotRecording(Object* host)) { |
649 return Page::FromAddress(reinterpret_cast<Address>(host)) | 644 return Page::FromAddress(reinterpret_cast<Address>(host)) |
650 ->ShouldSkipEvacuationSlotRecording(); | 645 ->ShouldSkipEvacuationSlotRecording(); |
651 } | 646 } |
652 | 647 |
653 INLINE(static bool IsOnEvacuationCandidate(Object* obj)) { | 648 INLINE(static bool IsOnEvacuationCandidate(Object* obj)) { |
654 return Page::FromAddress(reinterpret_cast<Address>(obj)) | 649 return Page::FromAddress(reinterpret_cast<Address>(obj)) |
655 ->IsEvacuationCandidate(); | 650 ->IsEvacuationCandidate(); |
656 } | 651 } |
657 | 652 |
658 void RecordRelocSlot(RelocInfo* rinfo, Object* target); | 653 void RecordRelocSlot(RelocInfo* rinfo, Object* target); |
659 void RecordCodeEntrySlot(Address slot, Code* target); | 654 void RecordCodeEntrySlot(HeapObject* object, Address slot, Code* target); |
660 void RecordCodeTargetPatch(Address pc, Code* target); | 655 void RecordCodeTargetPatch(Address pc, Code* target); |
661 | 656 |
662 INLINE(void RecordSlot( | 657 INLINE(void RecordSlot( |
663 Object** anchor_slot, Object** slot, Object* object, | 658 HeapObject* object, Object** slot, Object* target, |
664 SlotsBuffer::AdditionMode mode = SlotsBuffer::FAIL_ON_OVERFLOW)); | 659 SlotsBuffer::AdditionMode mode = SlotsBuffer::FAIL_ON_OVERFLOW)); |
665 | 660 |
666 void MigrateObject(HeapObject* dst, HeapObject* src, int size, | 661 void MigrateObject(HeapObject* dst, HeapObject* src, int size, |
667 AllocationSpace to_old_space); | 662 AllocationSpace to_old_space); |
668 | 663 |
669 void MigrateObjectTagged(HeapObject* dst, HeapObject* src, int size); | 664 void MigrateObjectTagged(HeapObject* dst, HeapObject* src, int size); |
670 void MigrateObjectMixed(HeapObject* dst, HeapObject* src, int size); | 665 void MigrateObjectMixed(HeapObject* dst, HeapObject* src, int size); |
671 void MigrateObjectRaw(HeapObject* dst, HeapObject* src, int size); | 666 void MigrateObjectRaw(HeapObject* dst, HeapObject* src, int size); |
672 | 667 |
673 bool TryPromoteObject(HeapObject* object, int object_size); | 668 bool TryPromoteObject(HeapObject* object, int object_size); |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1040 private: | 1035 private: |
1041 MarkCompactCollector* collector_; | 1036 MarkCompactCollector* collector_; |
1042 }; | 1037 }; |
1043 | 1038 |
1044 | 1039 |
1045 const char* AllocationSpaceName(AllocationSpace space); | 1040 const char* AllocationSpaceName(AllocationSpace space); |
1046 } | 1041 } |
1047 } // namespace v8::internal | 1042 } // namespace v8::internal |
1048 | 1043 |
1049 #endif // V8_HEAP_MARK_COMPACT_H_ | 1044 #endif // V8_HEAP_MARK_COMPACT_H_ |
OLD | NEW |