Reflecting arguments in Call must happen irrespective of JSRESOLVE_ASSIGNING (396584, r=igor).
Reflecting arguments in Call must happen irrespective of JSRESOLVE_ASSIGNING (396584, r=igor).
--- a/js/src/jsfun.c
+++ b/js/src/jsfun.c
@@ -854,33 +854,31 @@ call_resolve(JSContext *cx, JSObject *ob
getter, setter, attrs,
SPROP_HAS_SHORTID, (int) slot, NULL)) {
return JS_FALSE;
}
*objp = obj;
return JS_TRUE;
}
- if (!(flags & JSRESOLVE_ASSIGNING)) {
- /*
- * Resolve arguments so that we never store a particular Call object's
- * arguments object reference in a Call prototype's |arguments| slot.
- */
- atom = cx->runtime->atomState.argumentsAtom;
- if (id == ATOM_KEY(atom)) {
- if (!js_DefineNativeProperty(cx, obj,
- ATOM_TO_JSID(atom), JSVAL_VOID,
- NULL, NULL, JSPROP_PERMANENT,
- SPROP_HAS_SHORTID, CALL_ARGUMENTS,
- NULL)) {
- return JS_FALSE;
- }
- *objp = obj;
- return JS_TRUE;
+ /*
+ * Resolve arguments so that we never store a particular Call object's
+ * arguments object reference in a Call prototype's |arguments| slot.
+ */
+ atom = cx->runtime->atomState.argumentsAtom;
+ if (id == ATOM_KEY(atom)) {
+ if (!js_DefineNativeProperty(cx, obj,
+ ATOM_TO_JSID(atom), JSVAL_VOID,
+ NULL, NULL, JSPROP_PERMANENT,
+ SPROP_HAS_SHORTID, CALL_ARGUMENTS,
+ NULL)) {
+ return JS_FALSE;
}
+ *objp = obj;
+ return JS_TRUE;
}
return JS_TRUE;
}
static JSBool
call_convert(JSContext *cx, JSObject *obj, JSType type, jsval *vp)
{
JSStackFrame *fp;