| Index: src/heap/heap.cc
|
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc
|
| index 389af1bec1108e5040d27d90666fe48275976140..2718cdf30b89cba848c3c41b2a2e31d5020b4458 100644
|
| --- a/src/heap/heap.cc
|
| +++ b/src/heap/heap.cc
|
| @@ -1561,8 +1561,8 @@ void PromotionQueue::Initialize() {
|
| DCHECK((Page::kPageSize - MemoryChunk::kBodyOffset) % (2 * kPointerSize) ==
|
| 0);
|
| front_ = rear_ =
|
| - reinterpret_cast<intptr_t*>(heap_->new_space()->ToSpaceEnd());
|
| - limit_ = reinterpret_cast<intptr_t*>(
|
| + reinterpret_cast<struct Entry*>(heap_->new_space()->ToSpaceEnd());
|
| + limit_ = reinterpret_cast<struct Entry*>(
|
| Page::FromAllocationTop(reinterpret_cast<Address>(rear_))->area_start());
|
| emergency_stack_ = NULL;
|
| }
|
| @@ -1572,8 +1572,9 @@ void PromotionQueue::RelocateQueueHead() {
|
| DCHECK(emergency_stack_ == NULL);
|
|
|
| Page* p = Page::FromAllocationTop(reinterpret_cast<Address>(rear_));
|
| - intptr_t* head_start = rear_;
|
| - intptr_t* head_end = Min(front_, reinterpret_cast<intptr_t*>(p->area_end()));
|
| + struct Entry* head_start = rear_;
|
| + struct Entry* head_end =
|
| + Min(front_, reinterpret_cast<struct Entry*>(p->area_end()));
|
|
|
| int entries_count =
|
| static_cast<int>(head_end - head_start) / kEntrySizeInWords;
|
| @@ -1581,13 +1582,12 @@ void PromotionQueue::RelocateQueueHead() {
|
| emergency_stack_ = new List<Entry>(2 * entries_count);
|
|
|
| while (head_start != head_end) {
|
| - int size = static_cast<int>(*(head_start++));
|
| - HeapObject* obj = reinterpret_cast<HeapObject*>(*(head_start++));
|
| + struct Entry* entry = head_start++;
|
| // New space allocation in SemiSpaceCopyObject marked the region
|
| // overlapping with promotion queue as uninitialized.
|
| - MSAN_MEMORY_IS_INITIALIZED(&size, sizeof(size));
|
| - MSAN_MEMORY_IS_INITIALIZED(&obj, sizeof(obj));
|
| - emergency_stack_->Add(Entry(obj, size));
|
| + MSAN_MEMORY_IS_INITIALIZED(&entry->size_, sizeof(size));
|
| + MSAN_MEMORY_IS_INITIALIZED(&entry->obj_, sizeof(obj));
|
| + emergency_stack_->Add(*entry);
|
| }
|
| rear_ = head_end;
|
| }
|
| @@ -1945,7 +1945,7 @@ Address Heap::DoScavenge(ObjectVisitor* scavenge_visitor,
|
| {
|
| while (!promotion_queue()->is_empty()) {
|
| HeapObject* target;
|
| - int size;
|
| + intptr_t size;
|
| promotion_queue()->remove(&target, &size);
|
|
|
| // Promoted object might be already partially visited
|
| @@ -1954,7 +1954,8 @@ Address Heap::DoScavenge(ObjectVisitor* scavenge_visitor,
|
| // to new space.
|
| DCHECK(!target->IsMap());
|
|
|
| - IteratePointersToFromSpace(target, size, &Scavenger::ScavengeObject);
|
| + IteratePointersToFromSpace(target, static_cast<int>(size),
|
| + &Scavenger::ScavengeObject);
|
| }
|
| }
|
|
|
|
|