Bug 563845 - skip jsval-to-jsid conversion when jsval is a jsid (r=igor)

This commit is contained in:
Luke Wagner 2010-05-04 18:24:13 -07:00
Родитель 4e1453ef5b
Коммит 031310bf07
1 изменённых файлов: 5 добавлений и 7 удалений

Просмотреть файл

@ -576,9 +576,8 @@ ArgSetter(JSContext *cx, JSObject *obj, jsval idval, jsval *vp)
* args_delete to clear the corresponding reserved slot so the GC can
* collect its value.
*/
jsid id;
if (!JS_ValueToId(cx, idval, &id))
return false;
JS_ASSERT_IF(JSVAL_IS_STRING(idval), JSVAL_TO_STRING(idval)->isAtomized());
jsid id = (jsid)idval;
AutoValueRooter tvr(cx);
return js_DeleteProperty(cx, obj, id, tvr.addr()) &&
@ -1151,7 +1150,6 @@ call_resolve(JSContext *cx, JSObject *obj, jsval idval, uintN flags,
{
jsval callee;
JSFunction *fun;
jsid id;
JSLocalKind localKind;
JSPropertyOp getter, setter;
uintN slot, attrs;
@ -1162,14 +1160,14 @@ call_resolve(JSContext *cx, JSObject *obj, jsval idval, uintN flags,
if (!JSVAL_IS_STRING(idval))
return JS_TRUE;
JS_ASSERT(JSVAL_TO_STRING(idval)->isAtomized());
jsid id = (jsval)idval;
callee = obj->getSlot(JSSLOT_CALLEE);
if (JSVAL_IS_VOID(callee))
return JS_TRUE;
fun = GET_FUNCTION_PRIVATE(cx, JSVAL_TO_OBJECT(callee));
if (!js_ValueToStringId(cx, idval, &id))
return JS_FALSE;
/*
* Check whether the id refers to a formal parameter, local variable or
* the arguments special name.