summaryrefslogtreecommitdiffstats
path: root/js/src/vm/PropMap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'js/src/vm/PropMap.cpp')
-rw-r--r--js/src/vm/PropMap.cpp18
1 files changed, 10 insertions, 8 deletions
diff --git a/js/src/vm/PropMap.cpp b/js/src/vm/PropMap.cpp
index 8c1acaeea8..9fd6fbe3eb 100644
--- a/js/src/vm/PropMap.cpp
+++ b/js/src/vm/PropMap.cpp
@@ -966,18 +966,20 @@ void PropMapTable::trace(JSTracer* trc) {
}
#ifdef JSGC_HASH_TABLE_CHECKS
-void PropMapTable::checkAfterMovingGC() {
- for (Set::Enum e(set_); !e.empty(); e.popFront()) {
- PropMap* map = e.front().map();
+void PropMapTable::checkAfterMovingGC(JS::Zone* zone) {
+ CheckTableAfterMovingGC(set_, [zone](const auto& entry) {
+ PropMap* map = entry.map();
MOZ_ASSERT(map);
- CheckGCThingAfterMovingGC(map);
+ CheckGCThingAfterMovingGC(map, zone);
- PropertyKey key = map->getKey(e.front().index());
+ PropertyKey key = map->getKey(entry.index());
MOZ_RELEASE_ASSERT(!key.isVoid());
+ if (key.isGCThing()) {
+ CheckGCThingAfterMovingGC(key.toGCThing(), zone);
+ }
- auto p = lookupRaw(key);
- MOZ_RELEASE_ASSERT(p.found() && *p == e.front());
- }
+ return key;
+ });
}
#endif