SavedFrame * SavedStacks::getOrCreateSavedFrame(JSContext *cx, SavedFrame::Lookup &lookup) { SavedFrame::Set::AddPtr p = frames.lookupForAdd(lookup); if (p) return *p; Rooted<SavedFrame *> frame(cx, createFrameFromLookup(cx, lookup)); if (!frame) return nullptr; if (!frames.relookupOrAdd(p, lookup, frame)) return nullptr; return frame; }
SavedFrame * SavedStacks::getOrCreateSavedFrame(JSContext *cx, SavedFrame::HandleLookup lookup) { DependentAddPtr<SavedFrame::Set> p(cx, frames, lookup); if (p) return *p; RootedSavedFrame frame(cx, createFrameFromLookup(cx, lookup)); if (!frame) return nullptr; if (!p.add(cx, frames, lookup, frame)) return nullptr; return frame; }