JS_ReportError(cx, "%s is read-only", js_arguments_str);
JS_ReportErrorNumber(cx, NULL, JSMSG_READ_ONLY, js_arguments_str);
fun_setProperty(JSContext *cx, JSObject *obj, jsval id, jsval *vp){    JSFunction *fun;    JSStackFrame *fp;    JSObject *callobj;    /* Handle only the setting of arguments or fun.arguments in active fun. */    if (!JSVAL_IS_INT(id) || JSVAL_TO_INT(id) != CALL_ARGUMENTS)	return JS_TRUE;    /* No valid function object should lack private data, but check anyway. */    fun = JS_GetPrivate(cx, obj);    if (!fun)	return JS_TRUE;    /* Find the top-most non-native activation record, which must be fun's. */    for (fp = cx->fp; ; fp = fp->down) {	if (!fp)	    goto _readonly;	if (fp->fun == fun) {	    if (!fp->debugging)		break;	} else {	    if (fp->script)		goto _readonly;	}    }    /* Set only if unqualified: 'arguments = ...' not 'fun.arguments = ...'. */    if (!fp->pc || (js_CodeSpec[*fp->pc].format & JOF_MODEMASK) != JOF_NAME)    	goto _readonly;    /* Get a Call object for fp and set its arguments property to vp. */    callobj = js_GetCallObject(cx, fp, NULL, NULL);    if (!callobj)	return JS_FALSE;    return js_SetProperty(cx, callobj,			  (jsid)cx->runtime->atomState.argumentsAtom,			  vp);/* "readonly" can be a language extension on OSF */_readonly:    if (JSVERSION_IS_ECMA(cx->version))	return fun_getProperty(cx, obj, id, vp);    JS_ReportError(cx, "%s is read-only", js_arguments_str);    return JS_FALSE;}