diff options
Diffstat (limited to 'src/mongo/scripting/mozjs/objectwrapper.cpp')
-rw-r--r-- | src/mongo/scripting/mozjs/objectwrapper.cpp | 51 |
1 files changed, 10 insertions, 41 deletions
diff --git a/src/mongo/scripting/mozjs/objectwrapper.cpp b/src/mongo/scripting/mozjs/objectwrapper.cpp index 01bb79a8890..61030ce0274 100644 --- a/src/mongo/scripting/mozjs/objectwrapper.cpp +++ b/src/mongo/scripting/mozjs/objectwrapper.cpp @@ -109,57 +109,29 @@ void ObjectWrapper::Key::set(JSContext* cx, JS::HandleObject o, JS::HandleValue void ObjectWrapper::Key::define(JSContext* cx, JS::HandleObject o, JS::HandleValue value, - unsigned attrs) { + unsigned attrs, + JSNative getter, + JSNative setter) { switch (_type) { case Type::Field: - if (JS_DefineProperty(cx, o, _field, value, attrs)) + if (JS_DefineProperty(cx, o, _field, value, attrs, getter, setter)) return; break; case Type::Index: - if (JS_DefineElement(cx, o, _idx, value, attrs)) + if (JS_DefineElement(cx, o, _idx, value, attrs, getter, setter)) return; break; case Type::Id: { JS::RootedId id(cx, _id); - if (JS_DefinePropertyById(cx, o, id, value, attrs)) + if (JS_DefinePropertyById(cx, o, id, value, attrs, getter, setter)) return; break; } case Type::InternedString: { InternedStringId id(cx, _internedString); - if (JS_DefinePropertyById(cx, o, id, value, attrs)) - return; - break; - } - } - - throwCurrentJSException(cx, ErrorCodes::InternalError, "Failed to define value on a JSObject"); -} - -void ObjectWrapper::Key::define( - JSContext* cx, JS::HandleObject o, unsigned attrs, JSNative getter, JSNative setter) { - switch (_type) { - case Type::Field: - if (JS_DefineProperty(cx, o, _field, getter, setter, attrs)) - return; - break; - case Type::Index: - if (JS_DefineElement(cx, o, _idx, getter, setter, attrs)) - return; - break; - case Type::Id: { - JS::RootedId id(cx, _id); - - if (JS_DefinePropertyById(cx, o, id, getter, setter, attrs)) - return; - break; - } - case Type::InternedString: { - InternedStringId id(cx, _internedString); - - if (JS_DefinePropertyById(cx, o, id, getter, setter, attrs)) + if (JS_DefinePropertyById(cx, o, id, value, attrs, getter, setter)) return; break; } @@ -418,12 +390,9 @@ void ObjectWrapper::setPrototype(JS::HandleObject object) { throwCurrentJSException(_context, ErrorCodes::InternalError, "Failed to set prototype"); } -void ObjectWrapper::defineProperty(Key key, JS::HandleValue val, unsigned attrs) { - key.define(_context, _object, val, attrs); -} - -void ObjectWrapper::defineProperty(Key key, unsigned attrs, JSNative getter, JSNative setter) { - key.define(_context, _object, attrs, getter, setter); +void ObjectWrapper::defineProperty( + Key key, JS::HandleValue val, unsigned attrs, JSNative getter, JSNative setter) { + key.define(_context, _object, val, attrs, getter, setter); } void ObjectWrapper::deleteProperty(Key key) { |