| Index: test/cctest/test-weakmaps.cc
|
| diff --git a/test/cctest/test-weakmaps.cc b/test/cctest/test-weakmaps.cc
|
| index 2f28cb6c111d71bf487c8cb8c1dba401db7e987a..b3de42505fb807fa3723f33e3b4186ae5ba2ffa5 100644
|
| --- a/test/cctest/test-weakmaps.cc
|
| +++ b/test/cctest/test-weakmaps.cc
|
| @@ -255,3 +255,20 @@ TEST(Regress2060b) {
|
| heap->CollectAllGarbage(Heap::kNoGCFlags);
|
| heap->CollectAllGarbage(Heap::kNoGCFlags);
|
| }
|
| +
|
| +
|
| +TEST(Regress399527) {
|
| + CcTest::InitializeVM();
|
| + v8::HandleScope scope(CcTest::isolate());
|
| + Isolate* isolate = CcTest::i_isolate();
|
| + Heap* heap = isolate->heap();
|
| + {
|
| + HandleScope scope(isolate);
|
| + AllocateJSWeakMap(isolate);
|
| + SimulateIncrementalMarking(heap);
|
| + }
|
| + // The weak map is marked black here but leaving the handle scope will make
|
| + // the object unreachable. Aborting incremental marking will clear all the
|
| + // marking bits which makes the weak map garbage.
|
| + heap->CollectAllGarbage(Heap::kAbortIncrementalMarkingMask);
|
| +}
|
|
|