bool JSRuntime::transformToPermanentAtoms() { JS_ASSERT(!parentRuntime); // All static strings were created as permanent atoms, now move the contents // of the atoms table into permanentAtoms and mark each as permanent. JS_ASSERT(permanentAtoms && permanentAtoms->empty()); AtomSet *temp = atoms_; atoms_ = permanentAtoms; permanentAtoms = temp; for (AtomSet::Enum e(*permanentAtoms); !e.empty(); e.popFront()) { AtomStateEntry entry = e.front(); JSAtom *atom = entry.asPtr(); atom->morphIntoPermanentAtom(); } return true; }
bool JSRuntime::transformToPermanentAtoms(JSContext *cx) { MOZ_ASSERT(!parentRuntime); // All static strings were created as permanent atoms, now move the contents // of the atoms table into permanentAtoms and mark each as permanent. MOZ_ASSERT(!permanentAtoms); permanentAtoms = cx->new_<FrozenAtomSet>(atoms_); // takes ownership of atoms_ atoms_ = cx->new_<AtomSet>(); if (!atoms_ || !atoms_->init(JS_STRING_HASH_COUNT)) return false; for (FrozenAtomSet::Range r(permanentAtoms->all()); !r.empty(); r.popFront()) { AtomStateEntry entry = r.front(); JSAtom *atom = entry.asPtr(); atom->morphIntoPermanentAtom(); } return true; }