зеркало из https://github.com/mozilla/gecko-dev.git
Bug 757551 - Remove JS_ConstructObject{,WithArguments}. r=dmandelin
This commit is contained in:
Родитель
06b8304367
Коммит
8687a19277
|
@ -3440,49 +3440,6 @@ JS_DeepFreezeObject(JSContext *cx, JSObject *obj)
|
|||
return true;
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(JSObject *)
|
||||
JS_ConstructObject(JSContext *cx, JSClass *jsclasp, JSObject *parent)
|
||||
{
|
||||
return JS_ConstructObjectWithArguments(cx, jsclasp, parent, 0, NULL);
|
||||
}
|
||||
|
||||
JS_PUBLIC_API(JSObject *)
|
||||
JS_ConstructObjectWithArguments(JSContext *cx, JSClass *jsclasp, JSObject *parent,
|
||||
unsigned argc, jsval *argv)
|
||||
{
|
||||
AssertNoGC(cx);
|
||||
CHECK_REQUEST(cx);
|
||||
assertSameCompartment(cx, parent, JSValueArray(argv, argc));
|
||||
|
||||
AutoArrayRooter argtvr(cx, argc, argv);
|
||||
|
||||
Class *clasp = Valueify(jsclasp);
|
||||
if (!clasp)
|
||||
clasp = &ObjectClass; /* default class is Object */
|
||||
|
||||
JSProtoKey protoKey = GetClassProtoKey(clasp);
|
||||
|
||||
/* Protect constructor in case a crazy getter for .prototype uproots it. */
|
||||
RootedValue value(cx);
|
||||
if (!js_FindClassObject(cx, parent, protoKey, value.address(), clasp))
|
||||
return NULL;
|
||||
|
||||
Value rval;
|
||||
if (!InvokeConstructor(cx, value, argc, argv, &rval))
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
* If the instance's class differs from what was requested, throw a type
|
||||
* error.
|
||||
*/
|
||||
if (!rval.isObject() || rval.toObject().getClass() != clasp) {
|
||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
|
||||
JSMSG_WRONG_CONSTRUCTOR, clasp->name);
|
||||
return NULL;
|
||||
}
|
||||
return &rval.toObject();
|
||||
}
|
||||
|
||||
static JSBool
|
||||
LookupPropertyById(JSContext *cx, JSObject *obj, HandleId id, unsigned flags,
|
||||
JSObject **objp, JSProperty **propp)
|
||||
|
|
|
@ -3975,13 +3975,6 @@ JS_DeepFreezeObject(JSContext *cx, JSObject *obj);
|
|||
extern JS_PUBLIC_API(JSBool)
|
||||
JS_FreezeObject(JSContext *cx, JSObject *obj);
|
||||
|
||||
extern JS_PUBLIC_API(JSObject *)
|
||||
JS_ConstructObject(JSContext *cx, JSClass *clasp, JSObject *parent);
|
||||
|
||||
extern JS_PUBLIC_API(JSObject *)
|
||||
JS_ConstructObjectWithArguments(JSContext *cx, JSClass *clasp, JSObject *parent,
|
||||
unsigned argc, jsval *argv);
|
||||
|
||||
extern JS_PUBLIC_API(JSObject *)
|
||||
JS_New(JSContext *cx, JSObject *ctor, unsigned argc, jsval *argv);
|
||||
|
||||
|
|
|
@ -491,6 +491,37 @@ NewXMLAttributeName(JSContext *cx, JSLinearString *uri, JSLinearString *prefix,
|
|||
return obj;
|
||||
}
|
||||
|
||||
static JSObject *
|
||||
ConstructObjectWithArguments(JSContext *cx, Class *clasp, JSObject *parent,
|
||||
unsigned argc, jsval *argv)
|
||||
{
|
||||
assertSameCompartment(cx, parent, JSValueArray(argv, argc));
|
||||
|
||||
AutoArrayRooter argtvr(cx, argc, argv);
|
||||
|
||||
JSProtoKey protoKey = GetClassProtoKey(clasp);
|
||||
|
||||
/* Protect constructor in case a crazy getter for .prototype uproots it. */
|
||||
RootedValue value(cx);
|
||||
if (!js_FindClassObject(cx, parent, protoKey, value.address(), clasp))
|
||||
return NULL;
|
||||
|
||||
Value rval;
|
||||
if (!InvokeConstructor(cx, value, argc, argv, &rval))
|
||||
return NULL;
|
||||
|
||||
/*
|
||||
* If the instance's class differs from what was requested, throw a type
|
||||
* error.
|
||||
*/
|
||||
if (!rval.isObject() || rval.toObject().getClass() != clasp) {
|
||||
JS_ReportErrorNumber(cx, js_GetErrorMessage, NULL,
|
||||
JSMSG_WRONG_CONSTRUCTOR, clasp->name);
|
||||
return NULL;
|
||||
}
|
||||
return &rval.toObject();
|
||||
}
|
||||
|
||||
JSObject *
|
||||
js_ConstructXMLQNameObject(JSContext *cx, const Value &nsval, const Value &lnval)
|
||||
{
|
||||
|
@ -508,7 +539,7 @@ js_ConstructXMLQNameObject(JSContext *cx, const Value &nsval, const Value &lnval
|
|||
argv[0] = nsval;
|
||||
}
|
||||
argv[1] = lnval;
|
||||
return JS_ConstructObjectWithArguments(cx, Jsvalify(&QNameClass), NULL, 2, argv);
|
||||
return ConstructObjectWithArguments(cx, &QNameClass, NULL, 2, argv);
|
||||
}
|
||||
|
||||
static JSBool
|
||||
|
@ -2250,7 +2281,7 @@ GetNamespace(JSContext *cx, JSObject *qn, const JSXMLArray<JSObject> *inScopeNSe
|
|||
if (!match) {
|
||||
argv[0] = prefix ? STRING_TO_JSVAL(prefix) : JSVAL_VOID;
|
||||
argv[1] = STRING_TO_JSVAL(uri);
|
||||
ns = JS_ConstructObjectWithArguments(cx, Jsvalify(&NamespaceClass), NULL, 2, argv);
|
||||
ns = ConstructObjectWithArguments(cx, &NamespaceClass, NULL, 2, argv);
|
||||
if (!ns)
|
||||
return NULL;
|
||||
match = ns;
|
||||
|
@ -2929,7 +2960,7 @@ ToXMLName(JSContext *cx, jsval v, jsid *funidp)
|
|||
|
||||
construct:
|
||||
v = STRING_TO_JSVAL(name);
|
||||
obj = JS_ConstructObjectWithArguments(cx, Jsvalify(&QNameClass), NULL, 1, &v);
|
||||
obj = ConstructObjectWithArguments(cx, &QNameClass, NULL, 1, &v);
|
||||
if (!obj)
|
||||
return NULL;
|
||||
|
||||
|
@ -6713,7 +6744,7 @@ xml_setName(JSContext *cx, unsigned argc, jsval *vp)
|
|||
}
|
||||
}
|
||||
|
||||
nameqn = JS_ConstructObjectWithArguments(cx, Jsvalify(&QNameClass), NULL, 1, &name);
|
||||
nameqn = ConstructObjectWithArguments(cx, &QNameClass, NULL, 1, &name);
|
||||
if (!nameqn)
|
||||
return JS_FALSE;
|
||||
|
||||
|
@ -6818,8 +6849,7 @@ xml_setNamespace(JSContext *cx, unsigned argc, jsval *vp)
|
|||
if (!JSXML_HAS_NAME(xml))
|
||||
return JS_TRUE;
|
||||
|
||||
ns = JS_ConstructObjectWithArguments(cx, Jsvalify(&NamespaceClass), NULL,
|
||||
argc == 0 ? 0 : 1, vp + 2);
|
||||
ns = ConstructObjectWithArguments(cx, &NamespaceClass, NULL, argc == 0 ? 0 : 1, vp + 2);
|
||||
if (!ns)
|
||||
return JS_FALSE;
|
||||
vp[0] = OBJECT_TO_JSVAL(ns);
|
||||
|
@ -6827,7 +6857,7 @@ xml_setNamespace(JSContext *cx, unsigned argc, jsval *vp)
|
|||
|
||||
qnargv[0] = OBJECT_TO_JSVAL(ns);
|
||||
qnargv[1] = OBJECT_TO_JSVAL(xml->name);
|
||||
qn = JS_ConstructObjectWithArguments(cx, Jsvalify(&QNameClass), NULL, 2, qnargv);
|
||||
qn = ConstructObjectWithArguments(cx, &QNameClass, NULL, 2, qnargv);
|
||||
if (!qn)
|
||||
return JS_FALSE;
|
||||
|
||||
|
@ -7569,7 +7599,7 @@ js_GetDefaultXMLNamespace(JSContext *cx, jsval *vp)
|
|||
obj = tmp;
|
||||
}
|
||||
|
||||
ns = JS_ConstructObjectWithArguments(cx, Jsvalify(&NamespaceClass), NULL, 0, NULL);
|
||||
ns = ConstructObjectWithArguments(cx, &NamespaceClass, NULL, 0, NULL);
|
||||
if (!ns)
|
||||
return JS_FALSE;
|
||||
v = OBJECT_TO_JSVAL(ns);
|
||||
|
@ -7587,7 +7617,7 @@ js_SetDefaultXMLNamespace(JSContext *cx, const Value &v)
|
|||
Value argv[2];
|
||||
argv[0].setString(cx->runtime->emptyString);
|
||||
argv[1] = v;
|
||||
JSObject *ns = JS_ConstructObjectWithArguments(cx, Jsvalify(&NamespaceClass), NULL, 2, argv);
|
||||
JSObject *ns = ConstructObjectWithArguments(cx, &NamespaceClass, NULL, 2, argv);
|
||||
if (!ns)
|
||||
return JS_FALSE;
|
||||
|
||||
|
@ -7705,7 +7735,7 @@ js_FindXMLProperty(JSContext *cx, const Value &nameval, JSObject **objp, jsid *i
|
|||
nameobj = &nameval.toObject();
|
||||
if (nameobj->getClass() == &AnyNameClass) {
|
||||
v = STRING_TO_JSVAL(cx->runtime->atomState.starAtom);
|
||||
nameobj = JS_ConstructObjectWithArguments(cx, Jsvalify(&QNameClass), NULL, 1, &v);
|
||||
nameobj = ConstructObjectWithArguments(cx, &QNameClass, NULL, 1, &v);
|
||||
if (!nameobj)
|
||||
return JS_FALSE;
|
||||
} else {
|
||||
|
|
Загрузка…
Ссылка в новой задаче