зеркало из https://github.com/mozilla/gecko-dev.git
Bug 678998 - Rename IsFunctionQName to GetLocalNameFromFunctionQName and make it infallible, now that QName's localName slot stores an atom and conversion to jsid can be infallible. r=luke
--HG-- extra : rebase_source : 5f0958ab3053b07ca87eb5955b274e3bd551d23d
This commit is contained in:
Родитель
1b36104399
Коммит
e5483b3b1e
|
@ -774,9 +774,7 @@ js_InternNonIntElementIdSlow(JSContext *cx, JSObject *obj, const Value &idval,
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!js_IsFunctionQName(cx, &idval.toObject(), idp))
|
||||
return JS_FALSE;
|
||||
if (!JSID_IS_VOID(*idp))
|
||||
if (js_GetLocalNameFromFunctionQName(&idval.toObject(), idp, cx))
|
||||
return true;
|
||||
|
||||
return js_ValueToStringId(cx, idval, idp);
|
||||
|
@ -794,9 +792,7 @@ js_InternNonIntElementIdSlow(JSContext *cx, JSObject *obj, const Value &idval,
|
|||
return true;
|
||||
}
|
||||
|
||||
if (!js_IsFunctionQName(cx, &idval.toObject(), idp))
|
||||
return JS_FALSE;
|
||||
if (!JSID_IS_VOID(*idp)) {
|
||||
if (js_GetLocalNameFromFunctionQName(&idval.toObject(), idp, cx)) {
|
||||
*vp = IdToValue(*idp);
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -538,9 +538,7 @@ js_OnUnknownMethod(JSContext *cx, Value *vp)
|
|||
/* Extract the function name from function::name qname. */
|
||||
if (vp[0].isObject()) {
|
||||
obj = &vp[0].toObject();
|
||||
if (!js_IsFunctionQName(cx, obj, &id))
|
||||
return false;
|
||||
if (!JSID_IS_VOID(id))
|
||||
if (js_GetLocalNameFromFunctionQName(obj, &id, cx))
|
||||
vp[0] = IdToValue(id);
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -2812,8 +2812,8 @@ ReportBadXMLName(JSContext *cx, const Value &idval)
|
|||
js_ReportValueError(cx, JSMSG_BAD_XML_NAME, JSDVG_IGNORE_STACK, idval, NULL);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
IsFunctionQName(JSContext *cx, JSObject *qn, jsid *funidp)
|
||||
static bool
|
||||
GetLocalNameFromFunctionQName(JSObject *qn, jsid *funidp, JSContext *cx)
|
||||
{
|
||||
JSAtom *atom = cx->runtime->atomState.functionNamespaceURIAtom;
|
||||
JSLinearString *uri = qn->getNameURI();
|
||||
|
@ -2821,17 +2821,15 @@ IsFunctionQName(JSContext *cx, JSObject *qn, jsid *funidp)
|
|||
*funidp = ATOM_TO_JSID(qn->getQNameLocalName());
|
||||
return true;
|
||||
}
|
||||
*funidp = JSID_VOID;
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
JSBool
|
||||
js_IsFunctionQName(JSContext *cx, JSObject *obj, jsid *funidp)
|
||||
bool
|
||||
js_GetLocalNameFromFunctionQName(JSObject *obj, jsid *funidp, JSContext *cx)
|
||||
{
|
||||
if (obj->getClass() == &js_QNameClass)
|
||||
return IsFunctionQName(cx, obj, funidp);
|
||||
*funidp = JSID_VOID;
|
||||
return JS_TRUE;
|
||||
if (!obj->isQName())
|
||||
return false;
|
||||
return GetLocalNameFromFunctionQName(obj, funidp, cx);
|
||||
}
|
||||
|
||||
static JSObject *
|
||||
|
@ -2899,8 +2897,8 @@ construct:
|
|||
return NULL;
|
||||
|
||||
out:
|
||||
if (!IsFunctionQName(cx, obj, funidp))
|
||||
return NULL;
|
||||
if (!GetLocalNameFromFunctionQName(obj, funidp, cx))
|
||||
*funidp = JSID_VOID;
|
||||
return obj;
|
||||
|
||||
bad:
|
||||
|
@ -4979,14 +4977,8 @@ js_GetXMLMethod(JSContext *cx, JSObject *obj, jsid id, Value *vp)
|
|||
{
|
||||
JS_ASSERT(obj->isXML());
|
||||
|
||||
if (JSID_IS_OBJECT(id)) {
|
||||
jsid funid;
|
||||
|
||||
if (!js_IsFunctionQName(cx, JSID_TO_OBJECT(id), &funid))
|
||||
return JS_FALSE;
|
||||
if (!JSID_IS_VOID(funid))
|
||||
id = funid;
|
||||
}
|
||||
if (JSID_IS_OBJECT(id))
|
||||
js_GetLocalNameFromFunctionQName(JSID_TO_OBJECT(id), &id, cx);
|
||||
|
||||
/*
|
||||
* As our callers have a bad habit of passing a pointer to an unrooted
|
||||
|
@ -7447,8 +7439,8 @@ js_FindXMLProperty(JSContext *cx, const Value &nameval, JSObject **objp, jsid *i
|
|||
}
|
||||
|
||||
qn = nameobj;
|
||||
if (!IsFunctionQName(cx, qn, &funid))
|
||||
return JS_FALSE;
|
||||
if (!GetLocalNameFromFunctionQName(qn, &funid, cx))
|
||||
funid = JSID_VOID;
|
||||
|
||||
obj = &js_GetTopStackFrame(cx)->scopeChain();
|
||||
do {
|
||||
|
|
|
@ -280,11 +280,11 @@ extern JSObject *
|
|||
js_InitXMLClasses(JSContext *cx, JSObject *obj);
|
||||
|
||||
/*
|
||||
* If obj is QName corresponding to function::name, set *funidp to name's id,
|
||||
* otherwise set *funidp to void.
|
||||
* If obj is a QName corresponding to function::name, set *funidp to name's id
|
||||
* and return true, else return false.
|
||||
*/
|
||||
JSBool
|
||||
js_IsFunctionQName(JSContext *cx, JSObject *obj, jsid *funidp);
|
||||
extern bool
|
||||
js_GetLocalNameFromFunctionQName(JSObject *obj, jsid *funidp, JSContext *cx);
|
||||
|
||||
extern JSBool
|
||||
js_GetDefaultXMLNamespace(JSContext *cx, jsval *vp);
|
||||
|
|
Загрузка…
Ссылка в новой задаче