static bool WaiveAccessors(JSContext *cx, JS::MutableHandle<js::PropertyDescriptor> desc) { if (desc.hasGetterObject() && desc.getterObject()) { RootedValue v(cx, JS::ObjectValue(*desc.getterObject())); if (!WrapperFactory::WaiveXrayAndWrap(cx, v.address())) return false; desc.setGetterObject(&v.toObject()); } if (desc.hasSetterObject() && desc.setterObject()) { RootedValue v(cx, JS::ObjectValue(*desc.setterObject())); if (!WrapperFactory::WaiveXrayAndWrap(cx, v.address())) return false; desc.setSetterObject(&v.toObject()); } return true; }