if (MAXARGS(fp) > JSVAL_INT_BITS)
if (fp->argc > JSVAL_INT_BITS)
js_PutArgsObject(JSContext *cx, JSStackFrame *fp){    JSObject *argsobj;    jsval bmapval, rval;    JSBool ok;    JSRuntime *rt;    /*     * Reuse args_enumerate here to reflect fp's actual arguments as indexed     * elements of argsobj.  Do this first, before clearing and freeing the     * deleted argument slot bitmap, because args_enumerate depends on that.     */    argsobj = fp->argsobj;    ok = args_enumerate(cx, argsobj);    /*     * Now clear the deleted argument number bitmap slot and free the bitmap,     * if one was actually created due to 'delete arguments[0]' or similar.     */    (void) JS_GetReservedSlot(cx, argsobj, 0, &bmapval);    if (!JSVAL_IS_VOID(bmapval)) {        JS_SetReservedSlot(cx, argsobj, 0, JSVAL_VOID);        if (MAXARGS(fp) > JSVAL_INT_BITS)            JS_free(cx, JSVAL_TO_PRIVATE(bmapval));    }    /*     * Now get the prototype properties so we snapshot fp->fun and fp->argc     * before fp goes away.     */    rt = cx->runtime;    ok &= js_GetProperty(cx, argsobj, ATOM_TO_JSID(rt->atomState.calleeAtom),                         &rval);    ok &= js_SetProperty(cx, argsobj, ATOM_TO_JSID(rt->atomState.calleeAtom),                         &rval);    ok &= js_GetProperty(cx, argsobj, ATOM_TO_JSID(rt->atomState.lengthAtom),                         &rval);    ok &= js_SetProperty(cx, argsobj, ATOM_TO_JSID(rt->atomState.lengthAtom),                         &rval);    /*     * Clear the private pointer to fp, which is about to go away (js_Invoke).     * Do this last because the args_enumerate and js_GetProperty calls above     * need to follow the private slot to find fp.     */    ok &= JS_SetPrivate(cx, argsobj, NULL);    fp->argsobj = NULL;    return ok;}