*vp = LOCKED_OBJ_GET_SLOT(pobj, sprop->slot);
*vp = (SPROP_HAS_VALID_SLOT(sprop)) ? LOCKED_OBJ_GET_SLOT(pobj, sprop->slot) : JSVAL_VOID;
js_CheckAccess(JSContext *cx, JSObject *obj, jsid id, JSAccessMode mode,	       jsval *vp, uintN *attrsp){    JSObject *pobj;    JSProperty *prop;    JSScopeProperty *sprop;    JSClass *clasp;    JSBool ok;    if (!js_LookupProperty(cx, obj, id, &pobj, &prop))	return JS_FALSE;    if (!prop) {	*vp = JSVAL_VOID;	*attrsp = 0;        clasp = OBJ_GET_CLASS(cx, obj);	return !clasp->checkAccess ||               clasp->checkAccess(cx, obj, id, mode, vp);    }    if (!OBJ_IS_NATIVE(pobj)) {	OBJ_DROP_PROPERTY(cx, pobj, prop);	return OBJ_CHECK_ACCESS(cx, pobj, id, mode, vp, attrsp);    }    sprop = (JSScopeProperty *)prop;    *vp = LOCKED_OBJ_GET_SLOT(pobj, sprop->slot);    *attrsp = sprop->attrs;    clasp = LOCKED_OBJ_GET_CLASS(obj);    if (clasp->checkAccess) {	JS_UNLOCK_OBJ(cx, pobj);	ok = clasp->checkAccess(cx, obj, id, mode, vp);	JS_LOCK_OBJ(cx, pobj);    } else {	ok = JS_TRUE;    }    OBJ_DROP_PROPERTY(cx, pobj, prop);    return ok;}