if (!prop) return JS_TRUE;
if (!prop) { *attrsp = 0; return JS_TRUE; }
js_GetAttributes(JSContext *cx, JSObject *obj, jsid id, JSProperty *prop,		 uintN *attrsp){    JSBool noprop, ok;    JSScopeProperty *sprop;    noprop = !prop;    if (noprop) {	if (!js_LookupProperty(cx, obj, id, &obj, &prop))	    return JS_FALSE;	if (!prop)	    return JS_TRUE;	if (!OBJ_IS_NATIVE(obj)) {	    ok = OBJ_GET_ATTRIBUTES(cx, obj, id, prop, attrsp);	    OBJ_DROP_PROPERTY(cx, obj, prop);	    return ok;	}    }    sprop = (JSScopeProperty *)prop;    *attrsp = sprop->attrs;    if (noprop)	OBJ_DROP_PROPERTY(cx, obj, prop);    return JS_TRUE;}