Bug 390348: pinning of JSAtomState.emptyAtom is restored. r=brendan

git-svn-id: svn://10.0.0.236/trunk@231485 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
igor%mir2.org 2007-08-04 18:59:21 +00:00
parent fc727f7f30
commit 75943ec976

View File

@ -279,29 +279,19 @@ js_InitAtomState(JSContext *cx, JSAtomState *state)
return JS_TRUE;
}
static JSAtom *
AtomizeHashedKey(JSContext *cx, jsval key, JSHashNumber keyHash);
JSBool
js_InitPinnedAtoms(JSContext *cx, JSAtomState *state)
{
JSString *empty;
uintN i;
empty = js_NewStringCopyN(cx, js_empty_ucstr, 0);
if (!empty)
return JS_FALSE;
JS_ASSERT(js_HashString(empty) == 0);
state->emptyAtom = AtomizeHashedKey(cx, STRING_TO_JSVAL(empty), 0);
if (!state->emptyAtom)
return JS_FALSE;
#define FROB(lval,str) \
JS_BEGIN_MACRO \
if (!(state->lval = js_Atomize(cx, str, strlen(str), ATOM_PINNED))) \
return JS_FALSE; \
JS_END_MACRO
FROB(emptyAtom, "");
for (i = 0; i < JSTYPE_LIMIT; i++)
FROB(typeAtoms[i], js_type_strs[i]);