Index: src/heap/spaces.cc |
diff --git a/src/heap/spaces.cc b/src/heap/spaces.cc |
index 22833852067709f14d5da187636d124b0e004f38..e9d8030c5bd5d540a5549b767861b7b8c516ea78 100644 |
--- a/src/heap/spaces.cc |
+++ b/src/heap/spaces.cc |
@@ -3014,10 +3014,11 @@ AllocationResult LargeObjectSpace::AllocateRaw(int object_size, |
kNoGCCallbackFlags); |
AllocationStep(object->address(), object_size); |
+ heap()->CreateFillerObjectAt(object->address(), object_size, |
+ ClearRecordedSlots::kNo); |
+ |
if (heap()->incremental_marking()->black_allocation()) { |
- // We cannot use ObjectMarking here as the object still lacks a size. |
- Marking::WhiteToBlack(ObjectMarking::MarkBitFrom(object)); |
- MemoryChunk::IncrementLiveBytes(object, object_size); |
+ ObjectMarking::WhiteToBlack(object); |
} |
return object; |
} |
@@ -3182,12 +3183,13 @@ void LargeObjectSpace::Verify() { |
// We have only code, sequential strings, external strings |
// (sequential strings that have been morphed into external |
// strings), thin strings (sequential strings that have been |
- // morphed into thin strings), fixed arrays, byte arrays, and |
- // constant pool arrays in the large object space. |
+ // morphed into thin strings), fixed arrays, fixed double arrays, |
+ // byte arrays, and free space (right after allocation) in the |
+ // large object space. |
CHECK(object->IsAbstractCode() || object->IsSeqString() || |
object->IsExternalString() || object->IsThinString() || |
object->IsFixedArray() || object->IsFixedDoubleArray() || |
- object->IsByteArray()); |
+ object->IsByteArray() || object->IsFreeSpace()); |
// The object itself should look OK. |
object->ObjectVerify(); |