Index: src/heap/heap-inl.h |
diff --git a/src/heap/heap-inl.h b/src/heap/heap-inl.h |
index 1480da34108c5e49cd992b10de421520f777e0aa..0cfcfe572315e0e1edff4190169764f31c8586cb 100644 |
--- a/src/heap/heap-inl.h |
+++ b/src/heap/heap-inl.h |
@@ -25,20 +25,23 @@ |
namespace v8 { |
namespace internal { |
-void PromotionQueue::insert(HeapObject* target, int size) { |
+void PromotionQueue::insert(HeapObject* target, intptr_t size) { |
if (emergency_stack_ != NULL) { |
emergency_stack_->Add(Entry(target, size)); |
return; |
} |
- if ((rear_ - 2) < limit_) { |
+ if ((rear_ - kEntrySizeInWords) < limit_) { |
RelocateQueueHead(); |
emergency_stack_->Add(Entry(target, size)); |
return; |
} |
- *(--rear_) = reinterpret_cast<intptr_t>(target); |
- *(--rear_) = size; |
+ rear_ -= kEntrySizeInWords; |
+ struct Entry* entry = reinterpret_cast<struct Entry*>(rear_); |
+ entry->obj_ = target; |
+ entry->size_ = size; |
+ |
// Assert no overflow into live objects. |
#ifdef DEBUG |
SemiSpace::AssertValidRange(target->GetIsolate()->heap()->new_space()->top(), |