summaryrefslogtreecommitdiff
path: root/src/mongo/scripting/mozjs/objectwrapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/scripting/mozjs/objectwrapper.cpp')
-rw-r--r--src/mongo/scripting/mozjs/objectwrapper.cpp51
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) {