| Index: test/cctest/heap/test-mark-compact.cc
 | 
| diff --git a/test/cctest/heap/test-mark-compact.cc b/test/cctest/heap/test-mark-compact.cc
 | 
| index 0788e26108238052e35b224ff0633675b8e90681..ee37d070aca31dddf76e941e29b43fac197620e6 100644
 | 
| --- a/test/cctest/heap/test-mark-compact.cc
 | 
| +++ b/test/cctest/heap/test-mark-compact.cc
 | 
| @@ -41,6 +41,8 @@
 | 
|  
 | 
|  #include "src/full-codegen/full-codegen.h"
 | 
|  #include "src/global-handles.h"
 | 
| +#include "src/heap/mark-compact-inl.h"
 | 
| +#include "src/heap/mark-compact.h"
 | 
|  #include "test/cctest/cctest.h"
 | 
|  #include "test/cctest/heap/heap-tester.h"
 | 
|  #include "test/cctest/heap/heap-utils.h"
 | 
| @@ -483,4 +485,36 @@ TEST(RegressJoinThreadsOnIsolateDeinit) {
 | 
|    }
 | 
|  }
 | 
|  
 | 
| +TEST(Regress5829) {
 | 
| +  CcTest::InitializeVM();
 | 
| +  Isolate* isolate = CcTest::i_isolate();
 | 
| +  v8::HandleScope sc(CcTest::isolate());
 | 
| +  Heap* heap = isolate->heap();
 | 
| +  heap::SealCurrentObjects(heap);
 | 
| +  i::MarkCompactCollector* collector = heap->mark_compact_collector();
 | 
| +  i::IncrementalMarking* marking = heap->incremental_marking();
 | 
| +  if (collector->sweeping_in_progress()) {
 | 
| +    collector->EnsureSweepingCompleted();
 | 
| +  }
 | 
| +  CHECK(marking->IsMarking() || marking->IsStopped());
 | 
| +  if (marking->IsStopped()) {
 | 
| +    heap->StartIncrementalMarking(i::Heap::kNoGCFlags,
 | 
| +                                  i::GarbageCollectionReason::kTesting);
 | 
| +  }
 | 
| +  CHECK(marking->IsMarking());
 | 
| +  marking->StartBlackAllocationForTesting();
 | 
| +  Handle<FixedArray> array = isolate->factory()->NewFixedArray(10, TENURED);
 | 
| +  Address old_end = array->address() + array->Size();
 | 
| +  // Right trim the array without clearing the mark bits.
 | 
| +  array->set_length(9);
 | 
| +  heap->CreateFillerObjectAt(old_end - kPointerSize, kPointerSize,
 | 
| +                             ClearRecordedSlots::kNo);
 | 
| +  heap->old_space()->EmptyAllocationInfo();
 | 
| +  LiveObjectIterator<kGreyObjects> it(Page::FromAddress(array->address()));
 | 
| +  HeapObject* object = nullptr;
 | 
| +  while ((object = it.Next()) != nullptr) {
 | 
| +    CHECK(!object->IsFiller());
 | 
| +  }
 | 
| +}
 | 
| +
 | 
|  #endif  // __linux__ and !USE_SIMULATOR
 | 
| 
 |