| Index: src/heap/store-buffer.cc
|
| diff --git a/src/heap/store-buffer.cc b/src/heap/store-buffer.cc
|
| index 9a469ee5f2759be2af7c7250c98626a695acae85..2ae73d9cfbbc7f1670e0a75a83942f8ad993df04 100644
|
| --- a/src/heap/store-buffer.cc
|
| +++ b/src/heap/store-buffer.cc
|
| @@ -379,8 +379,10 @@ void StoreBuffer::ClearInvalidStoreBufferEntries() {
|
| // 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)) {
|
| + Page* heap_object_page = Page::FromAddress(heap_object->address());
|
| + if (heap_object_page->IsFlagSet(Page::BLACK_PAGE) ||
|
| + (Marking::IsBlack(Marking::MarkBitFrom(heap_object)) &&
|
| + heap_->mark_compact_collector()->IsSlotInLiveObject(addr))) {
|
| *new_top++ = addr;
|
| }
|
| }
|
|
|