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); |
+} |