| Index: src/heap/spaces.cc
|
| diff --git a/src/heap/spaces.cc b/src/heap/spaces.cc
|
| index d338eab34108eabdad5c7875b80e53aa51e6063c..e9d2244a0efc84875ee836e99e83bee13be98b37 100644
|
| --- a/src/heap/spaces.cc
|
| +++ b/src/heap/spaces.cc
|
| @@ -505,6 +505,7 @@ MemoryChunk* MemoryChunk::Initialize(Heap* heap, Address base, size_t size,
|
| chunk->InitializeReservedMemory();
|
| chunk->old_to_new_slots_ = nullptr;
|
| chunk->old_to_old_slots_ = nullptr;
|
| + chunk->typed_old_to_new_slots_ = nullptr;
|
| chunk->typed_old_to_old_slots_ = nullptr;
|
| chunk->skip_list_ = nullptr;
|
| chunk->write_barrier_counter_ = kWriteBarrierCounterGranularity;
|
| @@ -1037,6 +1038,8 @@ void MemoryChunk::ReleaseAllocatedMemory() {
|
| }
|
| if (old_to_new_slots_ != nullptr) ReleaseOldToNewSlots();
|
| if (old_to_old_slots_ != nullptr) ReleaseOldToOldSlots();
|
| + if (typed_old_to_new_slots_ != nullptr) ReleaseTypedOldToNewSlots();
|
| + if (typed_old_to_old_slots_ != nullptr) ReleaseTypedOldToOldSlots();
|
| }
|
|
|
| static SlotSet* AllocateSlotSet(size_t size, Address page_start) {
|
| @@ -1069,6 +1072,16 @@ void MemoryChunk::ReleaseOldToOldSlots() {
|
| old_to_old_slots_ = nullptr;
|
| }
|
|
|
| +void MemoryChunk::AllocateTypedOldToNewSlots() {
|
| + DCHECK(nullptr == typed_old_to_new_slots_);
|
| + typed_old_to_new_slots_ = new TypedSlotSet(address());
|
| +}
|
| +
|
| +void MemoryChunk::ReleaseTypedOldToNewSlots() {
|
| + delete typed_old_to_new_slots_;
|
| + typed_old_to_new_slots_ = nullptr;
|
| +}
|
| +
|
| void MemoryChunk::AllocateTypedOldToOldSlots() {
|
| DCHECK(nullptr == typed_old_to_old_slots_);
|
| typed_old_to_old_slots_ = new TypedSlotSet(address());
|
|
|