mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-13 05:15:45 +00:00
Bug 959695 part 3. Make ReportIsNotFunction take a Handle. r=terrence
This commit is contained in:
parent
cefeb1bc02
commit
1b7f303480
@ -3986,7 +3986,8 @@ JS_CloneFunctionObject(JSContext *cx, JSObject *funobjArg, JSObject *parentArg)
|
||||
|
||||
if (!funobj->is<JSFunction>()) {
|
||||
AutoCompartment ac(cx, funobj);
|
||||
ReportIsNotFunction(cx, ObjectValue(*funobj));
|
||||
RootedValue v(cx, ObjectValue(*funobj));
|
||||
ReportIsNotFunction(cx, v);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -1207,7 +1207,7 @@ js_DefineOwnProperty(JSContext *cx, JSObject *objArg, jsid idArg,
|
||||
}
|
||||
|
||||
JS_FRIEND_API(bool)
|
||||
js_ReportIsNotFunction(JSContext *cx, const JS::Value& v)
|
||||
js_ReportIsNotFunction(JSContext *cx, JS::HandleValue v)
|
||||
{
|
||||
return ReportIsNotFunction(cx, v);
|
||||
}
|
||||
|
@ -1782,7 +1782,7 @@ js_DefineOwnProperty(JSContext *cx, JSObject *objArg, jsid idArg,
|
||||
JS::Handle<JSPropertyDescriptor> descriptor, bool *bp);
|
||||
|
||||
extern JS_FRIEND_API(bool)
|
||||
js_ReportIsNotFunction(JSContext *cx, const JS::Value& v);
|
||||
js_ReportIsNotFunction(JSContext *cx, JS::HandleValue v);
|
||||
|
||||
#ifdef JSGC_GENERATIONAL
|
||||
extern JS_FRIEND_API(void)
|
||||
|
@ -1305,7 +1305,8 @@ js::CallOrConstructBoundFunction(JSContext *cx, unsigned argc, Value *vp)
|
||||
* So before anything else, if we are an arrow function, make sure we
|
||||
* don't even get here. You never saw me. Burn this comment.
|
||||
*/
|
||||
return ReportIsNotFunction(cx, ObjectValue(*fun), -1, CONSTRUCT);
|
||||
RootedValue v(cx, ObjectValue(*fun));
|
||||
return ReportIsNotFunction(cx, v, -1, CONSTRUCT);
|
||||
}
|
||||
|
||||
/* 15.3.4.5.1 step 1, 15.3.4.5.2 step 3. */
|
||||
|
@ -290,7 +290,8 @@ BaseProxyHandler::fun_toString(JSContext *cx, HandleObject proxy, unsigned inden
|
||||
{
|
||||
if (proxy->isCallable())
|
||||
return JS_NewStringCopyZ(cx, "function () {\n [native code]\n}");
|
||||
ReportIsNotFunction(cx, ObjectValue(*proxy));
|
||||
RootedValue v(cx, ObjectValue(*proxy));
|
||||
ReportIsNotFunction(cx, v);
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
|
@ -344,13 +344,12 @@ SetPropertyOperation(JSContext *cx, HandleScript script, jsbytecode *pc, HandleV
|
||||
}
|
||||
|
||||
bool
|
||||
js::ReportIsNotFunction(JSContext *cx, const Value &v, int numToSkip, MaybeConstruct construct)
|
||||
js::ReportIsNotFunction(JSContext *cx, HandleValue v, int numToSkip, MaybeConstruct construct)
|
||||
{
|
||||
unsigned error = construct ? JSMSG_NOT_CONSTRUCTOR : JSMSG_NOT_FUNCTION;
|
||||
int spIndex = numToSkip >= 0 ? -(numToSkip + 1) : JSDVG_SEARCH_STACK;
|
||||
|
||||
RootedValue val(cx, v);
|
||||
js_ReportValueError3(cx, error, spIndex, val, NullPtr(), nullptr, nullptr);
|
||||
js_ReportValueError3(cx, error, spIndex, v, NullPtr(), nullptr, nullptr);
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -441,7 +440,7 @@ js::Invoke(JSContext *cx, CallArgs args, MaybeConstruct construct)
|
||||
InitialFrameFlags initial = (InitialFrameFlags) construct;
|
||||
|
||||
if (args.calleev().isPrimitive())
|
||||
return ReportIsNotFunction(cx, args.calleev().get(), args.length() + 1, construct);
|
||||
return ReportIsNotFunction(cx, args.calleev(), args.length() + 1, construct);
|
||||
|
||||
JSObject &callee = args.callee();
|
||||
const Class *clasp = callee.getClass();
|
||||
@ -454,7 +453,7 @@ js::Invoke(JSContext *cx, CallArgs args, MaybeConstruct construct)
|
||||
#endif
|
||||
JS_ASSERT_IF(construct, !clasp->construct);
|
||||
if (!clasp->call)
|
||||
return ReportIsNotFunction(cx, args.calleev().get(), args.length() + 1, construct);
|
||||
return ReportIsNotFunction(cx, args.calleev(), args.length() + 1, construct);
|
||||
return CallJSNative(cx, clasp->call, args);
|
||||
}
|
||||
|
||||
@ -533,7 +532,7 @@ js::InvokeConstructor(JSContext *cx, CallArgs args)
|
||||
args.setThis(MagicValue(JS_IS_CONSTRUCTING));
|
||||
|
||||
if (!args.calleev().isObject())
|
||||
return ReportIsNotFunction(cx, args.calleev().get(), args.length() + 1, CONSTRUCT);
|
||||
return ReportIsNotFunction(cx, args.calleev(), args.length() + 1, CONSTRUCT);
|
||||
|
||||
JSObject &callee = args.callee();
|
||||
if (callee.is<JSFunction>()) {
|
||||
@ -545,7 +544,7 @@ js::InvokeConstructor(JSContext *cx, CallArgs args)
|
||||
}
|
||||
|
||||
if (!fun->isInterpretedConstructor())
|
||||
return ReportIsNotFunction(cx, args.calleev().get(), args.length() + 1, CONSTRUCT);
|
||||
return ReportIsNotFunction(cx, args.calleev(), args.length() + 1, CONSTRUCT);
|
||||
|
||||
if (!Invoke(cx, args, CONSTRUCT))
|
||||
return false;
|
||||
@ -556,7 +555,7 @@ js::InvokeConstructor(JSContext *cx, CallArgs args)
|
||||
|
||||
const Class *clasp = callee.getClass();
|
||||
if (!clasp->construct)
|
||||
return ReportIsNotFunction(cx, args.calleev().get(), args.length() + 1, CONSTRUCT);
|
||||
return ReportIsNotFunction(cx, args.calleev(), args.length() + 1, CONSTRUCT);
|
||||
|
||||
return CallJSNativeConstructor(cx, clasp->construct, args);
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ enum MaybeConstruct {
|
||||
* before it reaches |v|. If it's -1, the decompiler will search the stack.
|
||||
*/
|
||||
extern bool
|
||||
ReportIsNotFunction(JSContext *cx, const Value &v, int numToSkip = -1,
|
||||
ReportIsNotFunction(JSContext *cx, HandleValue v, int numToSkip = -1,
|
||||
MaybeConstruct construct = NO_CONSTRUCT);
|
||||
|
||||
/* See ReportIsNotFunction comment for the meaning of numToSkip. */
|
||||
|
@ -1118,7 +1118,8 @@ DOMXrayTraits::call(JSContext *cx, HandleObject wrapper,
|
||||
// call those on the content compartment.
|
||||
if (clasp->flags & JSCLASS_IS_DOMIFACEANDPROTOJSCLASS) {
|
||||
if (!clasp->call) {
|
||||
js_ReportIsNotFunction(cx, JS::ObjectValue(*wrapper));
|
||||
RootedValue v(cx, ObjectValue(*wrapper));
|
||||
js_ReportIsNotFunction(cx, v);
|
||||
return false;
|
||||
}
|
||||
// call it on the Xray compartment
|
||||
@ -1143,7 +1144,8 @@ DOMXrayTraits::construct(JSContext *cx, HandleObject wrapper,
|
||||
// See comments in DOMXrayTraits::call() explaining what's going on here.
|
||||
if (clasp->flags & JSCLASS_IS_DOMIFACEANDPROTOJSCLASS) {
|
||||
if (!clasp->construct) {
|
||||
js_ReportIsNotFunction(cx, JS::ObjectValue(*wrapper));
|
||||
RootedValue v(cx, ObjectValue(*wrapper));
|
||||
js_ReportIsNotFunction(cx, v);
|
||||
return false;
|
||||
}
|
||||
if (!clasp->construct(cx, args.length(), args.base()))
|
||||
|
Loading…
Reference in New Issue
Block a user