void JSCompartment::checkWrapperMapAfterMovingGC() { /* * Assert that the postbarriers have worked and that nothing is left in * wrapperMap that points into the nursery, and that the hash table entries * are discoverable. */ for (WrapperMap::Enum e(crossCompartmentWrappers); !e.empty(); e.popFront()) { e.front().mutableKey().applyToWrapped(CheckGCThingAfterMovingGCFunctor()); e.front().mutableKey().applyToDebugger(CheckGCThingAfterMovingGCFunctor()); WrapperMap::Ptr ptr = crossCompartmentWrappers.lookup(e.front().key()); MOZ_RELEASE_ASSERT(ptr.found() && &*ptr == &e.front()); } }
void JSCompartment::checkWrapperMapAfterMovingGC() { /* * Assert that the postbarriers have worked and that nothing is left in * wrapperMap that points into the nursery, and that the hash table entries * are discoverable. */ for (WrapperMap::Enum e(crossCompartmentWrappers); !e.empty(); e.popFront()) { CrossCompartmentKey key = e.front().key(); CheckGCThingAfterMovingGC(key.debugger); CheckGCThingAfterMovingGC(key.wrapped); CheckGCThingAfterMovingGC(static_cast<Cell *>(e.front().value().get().toGCThing())); WrapperMap::Ptr ptr = crossCompartmentWrappers.lookup(key); MOZ_ASSERT(ptr.found() && &*ptr == &e.front()); } }
void JSCompartment::checkWrapperMapAfterMovingGC() { /* * Assert that the postbarriers have worked and that nothing is left in * wrapperMap that points into the nursery, and that the hash table entries * are discoverable. */ JS::shadow::Runtime *rt = JS::shadow::Runtime::asShadowRuntime(runtimeFromMainThread()); for (WrapperMap::Enum e(crossCompartmentWrappers); !e.empty(); e.popFront()) { CrossCompartmentKey key = e.front().key(); JS_ASSERT(!IsInsideNursery(rt, key.debugger)); JS_ASSERT(!IsInsideNursery(rt, key.wrapped)); JS_ASSERT(!IsInsideNursery(rt, e.front().value().get().toGCThing())); WrapperMap::Ptr ptr = crossCompartmentWrappers.lookup(key); JS_ASSERT(ptr.found() && &*ptr == &e.front()); } }