diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index 5a1edb9b93..0c70e73950 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -4761,11 +4761,14 @@ GCRuntime::sweepFinalizationRegistries() if (!obj || !obj->is()) { zone->finalizationRegistries.erase(zone->finalizationRegistries.begin() + i); continue; - } - - obj->as().sweepAfterGC(rt); + } i++; } + for (size_t i = 0; i < zone->finalizationRegistries.length(); i++) { + JSObject* obj = zone->finalizationRegistries[i].unbarrieredGet(); + obj->as().sweepAfterGC(rt); + } + zone->finalizationRegistries.clear(); } }