| Index: src/heap/store-buffer.cc
|
| diff --git a/src/heap/store-buffer.cc b/src/heap/store-buffer.cc
|
| index f5404a4b62b2fa34d2a50134cfb943411d5be254..b21bf27c13966184abec0cbec5d454c5ed5c7e4d 100644
|
| --- a/src/heap/store-buffer.cc
|
| +++ b/src/heap/store-buffer.cc
|
| @@ -363,14 +363,12 @@
|
| Address* new_top = old_start_;
|
| for (Address* current = old_start_; current < old_top_; current++) {
|
| Address addr = *current;
|
| - Object** slot = reinterpret_cast<Object**>(addr);
|
| + Object** slot = reinterpret_cast<Object**>(*current);
|
| Object* object = *slot;
|
| - if (heap_->InNewSpace(object) && object->IsHeapObject()) {
|
| - // If the target object is not black, the source slot must be part
|
| - // of a non-black (dead) object.
|
| - HeapObject* heap_object = HeapObject::cast(object);
|
| - if (Marking::IsBlack(Marking::MarkBitFrom(heap_object)) &&
|
| - heap_->mark_compact_collector()->IsSlotInLiveObject(addr)) {
|
| + if (heap_->InNewSpace(object)) {
|
| + if (heap_->mark_compact_collector()->IsSlotInLiveObject(
|
| + reinterpret_cast<HeapObject**>(slot),
|
| + reinterpret_cast<HeapObject*>(object))) {
|
| *new_top++ = addr;
|
| }
|
| }
|
| @@ -393,10 +391,10 @@
|
| for (Address* current = old_start_; current < old_top_; current++) {
|
| Object** slot = reinterpret_cast<Object**>(*current);
|
| Object* object = *slot;
|
| - CHECK(object->IsHeapObject());
|
| CHECK(heap_->InNewSpace(object));
|
| heap_->mark_compact_collector()->VerifyIsSlotInLiveObject(
|
| - reinterpret_cast<Address>(slot), HeapObject::cast(object));
|
| + reinterpret_cast<HeapObject**>(slot),
|
| + reinterpret_cast<HeapObject*>(object));
|
| }
|
| }
|
|
|
|
|