Index: src/heap/spaces.h |
diff --git a/src/heap/spaces.h b/src/heap/spaces.h |
index 903a3a48824bef4e07bd1711bfbd39c72aa43cdd..0a526e16be255427f5e71d6724b01fb9e65a8ba0 100644 |
--- a/src/heap/spaces.h |
+++ b/src/heap/spaces.h |
@@ -131,12 +131,6 @@ enum FreeListCategoryType { |
enum FreeMode { kLinkCategory, kDoNotLinkCategory }; |
-enum RememberedSetType { |
- OLD_TO_NEW, |
- OLD_TO_OLD, |
- NUMBER_OF_REMEMBERED_SET_TYPES = OLD_TO_OLD + 1 |
-}; |
- |
// A free list category maintains a linked list of free memory blocks. |
class FreeListCategory { |
public: |
@@ -344,15 +338,17 @@ class MemoryChunk { |
+ kPointerSize // Heap* heap_ |
+ kIntptrSize // intptr_t progress_bar_ |
+ kIntptrSize // intptr_t live_byte_count_ |
- + kPointerSize * NUMBER_OF_REMEMBERED_SET_TYPES // SlotSet* array |
- + kPointerSize * NUMBER_OF_REMEMBERED_SET_TYPES // TypedSlotSet* array |
- + kPointerSize // SkipList* skip_list_ |
- + kPointerSize // AtomicValue high_water_mark_ |
- + kPointerSize // base::Mutex* mutex_ |
- + kPointerSize // base::AtomicWord concurrent_sweeping_ |
- + 2 * kSizetSize // AtomicNumber free-list statistics |
- + kPointerSize // AtomicValue next_chunk_ |
- + kPointerSize // AtomicValue prev_chunk_ |
+ + kPointerSize // SlotSet* old_to_new_slots_ |
+ + kPointerSize // SlotSet* old_to_old_slots_ |
+ + kPointerSize // TypedSlotSet* typed_old_to_new_slots_ |
+ + kPointerSize // TypedSlotSet* typed_old_to_old_slots_ |
+ + kPointerSize // SkipList* skip_list_ |
+ + kPointerSize // AtomicValue high_water_mark_ |
+ + kPointerSize // base::Mutex* mutex_ |
+ + kPointerSize // base::AtomicWord concurrent_sweeping_ |
+ + 2 * kSizetSize // AtomicNumber free-list statistics |
+ + kPointerSize // AtomicValue next_chunk_ |
+ + kPointerSize // AtomicValue prev_chunk_ |
+ FreeListCategory::kSize * kNumberOfCategories |
// FreeListCategory categories_[kNumberOfCategories] |
+ kPointerSize // LocalArrayBufferTracker* local_tracker_ |
@@ -467,26 +463,24 @@ class MemoryChunk { |
inline void set_skip_list(SkipList* skip_list) { skip_list_ = skip_list; } |
- template <RememberedSetType type> |
- SlotSet* slot_set() { |
- return slot_set_[type].Value(); |
+ inline SlotSet* old_to_new_slots() { return old_to_new_slots_.Value(); } |
+ inline SlotSet* old_to_old_slots() { return old_to_old_slots_; } |
+ inline TypedSlotSet* typed_old_to_new_slots() { |
+ return typed_old_to_new_slots_.Value(); |
} |
- |
- template <RememberedSetType type> |
- TypedSlotSet* typed_slot_set() { |
- return typed_slot_set_[type].Value(); |
+ inline TypedSlotSet* typed_old_to_old_slots() { |
+ return typed_old_to_old_slots_; |
} |
- |
inline LocalArrayBufferTracker* local_tracker() { return local_tracker_; } |
- template <RememberedSetType type> |
- SlotSet* AllocateSlotSet(); |
- template <RememberedSetType type> |
- void ReleaseSlotSet(); |
- template <RememberedSetType type> |
- TypedSlotSet* AllocateTypedSlotSet(); |
- template <RememberedSetType type> |
- void ReleaseTypedSlotSet(); |
+ V8_EXPORT_PRIVATE void AllocateOldToNewSlots(); |
+ void ReleaseOldToNewSlots(); |
+ V8_EXPORT_PRIVATE void AllocateOldToOldSlots(); |
+ void ReleaseOldToOldSlots(); |
+ void AllocateTypedOldToNewSlots(); |
+ void ReleaseTypedOldToNewSlots(); |
+ void AllocateTypedOldToOldSlots(); |
+ void ReleaseTypedOldToOldSlots(); |
void AllocateLocalTracker(); |
void ReleaseLocalTracker(); |
void AllocateYoungGenerationBitmap(); |
@@ -658,9 +652,10 @@ class MemoryChunk { |
// A single slot set for small pages (of size kPageSize) or an array of slot |
// set for large pages. In the latter case the number of entries in the array |
// is ceil(size() / kPageSize). |
- base::AtomicValue<SlotSet*> slot_set_[NUMBER_OF_REMEMBERED_SET_TYPES]; |
- base::AtomicValue<TypedSlotSet*> |
- typed_slot_set_[NUMBER_OF_REMEMBERED_SET_TYPES]; |
+ base::AtomicValue<SlotSet*> old_to_new_slots_; |
+ SlotSet* old_to_old_slots_; |
+ base::AtomicValue<TypedSlotSet*> typed_old_to_new_slots_; |
+ TypedSlotSet* typed_old_to_old_slots_; |
SkipList* skip_list_; |