bool JavaScriptShared::fromJSIDVariant(JSContext* cx, const JSIDVariant& from, MutableHandleId to) { switch (from.type()) { case JSIDVariant::TSymbolVariant: { Symbol* sym = fromSymbolVariant(cx, from.get_SymbolVariant()); if (!sym) return false; to.set(SYMBOL_TO_JSID(sym)); return true; } case JSIDVariant::TnsString: return convertGeckoStringToId(cx, from.get_nsString(), to); case JSIDVariant::Tint32_t: to.set(INT_TO_JSID(from.get_int32_t())); return true; default: return false; } }
bool js::IndexToIdSlow(ExclusiveContext *cx, uint32_t index, MutableHandleId idp) { MOZ_ASSERT(index > JSID_INT_MAX); char16_t buf[UINT32_CHAR_BUFFER_LENGTH]; RangedPtr<char16_t> end(ArrayEnd(buf), buf, ArrayEnd(buf)); RangedPtr<char16_t> start = BackfillIndexInCharBuffer(index, end); JSAtom *atom = AtomizeChars(cx, start.get(), end - start); if (!atom) return false; idp.set(JSID_FROM_BITS((size_t)atom)); return true; }