| Index: src/heap/heap.cc
|
| diff --git a/src/heap/heap.cc b/src/heap/heap.cc
|
| index fd08c8292f812c8c3084fb699eb9f65dcc98b4a7..5d3bde4592c991844f1f024c7ab7cb391702d2e7 100644
|
| --- a/src/heap/heap.cc
|
| +++ b/src/heap/heap.cc
|
| @@ -3321,7 +3321,6 @@ void Heap::RightTrimFixedArray(FixedArrayBase* object, int elements_to_trim) {
|
| const int bytes_to_trim = elements_to_trim * element_size;
|
|
|
| // For now this trick is only applied to objects in new and paged space.
|
| - DCHECK(!lo_space()->Contains(object));
|
| DCHECK(object->map() != fixed_cow_array_map());
|
|
|
| const int len = object->length();
|
| @@ -3333,7 +3332,12 @@ void Heap::RightTrimFixedArray(FixedArrayBase* object, int elements_to_trim) {
|
| // Technically in new space this write might be omitted (except for
|
| // debug mode which iterates through the heap), but to play safer
|
| // we still do it.
|
| - CreateFillerObjectAt(new_end, bytes_to_trim);
|
| + // We do not create a filler for objects in large object space.
|
| + // TODO(hpayer): We should shrink the large object page if the size
|
| + // of the object changed significantly.
|
| + if (!lo_space()->Contains(object)) {
|
| + CreateFillerObjectAt(new_end, bytes_to_trim);
|
| + }
|
|
|
| // Initialize header of the trimmed array. We are storing the new length
|
| // using release store after creating a filler for the left-over space to
|
|
|