From 444e5712a9bb77f1986a526fc2bc9d43205db21e Mon Sep 17 00:00:00 2001 From: Terrence Cole Date: Wed, 29 Jul 2015 08:57:14 -0700 Subject: [PATCH] Bug 1166041 - Wait for nursery sweeping to finish before shutting down; r=jonco --HG-- extra : rebase_source : 69979426eea5b35354b22dc744e794ed33438398 --- js/src/gc/Nursery.cpp | 1 + js/src/jsgc.cpp | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/js/src/gc/Nursery.cpp b/js/src/gc/Nursery.cpp index c7d41ff2a757..a1225c95a7e8 100644 --- a/js/src/gc/Nursery.cpp +++ b/js/src/gc/Nursery.cpp @@ -638,6 +638,7 @@ js::Nursery::freeMallocedBuffers() void js::Nursery::waitBackgroundFreeEnd() { + MOZ_ASSERT(freeMallocedBuffersTask); freeMallocedBuffersTask->join(); } diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index c4e39073fd4d..e1a1e813c790 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -1318,6 +1318,10 @@ GCRuntime::init(uint32_t maxbytes, uint32_t maxNurseryBytes) void GCRuntime::finish() { + /* Wait for the nursery sweeping to end. */ + if (rt->gc.nursery.isEnabled()) + rt->gc.nursery.waitBackgroundFreeEnd(); + /* * Wait until the background finalization and allocation stops and the * helper thread shuts down before we forcefully release any remaining GC