summaryrefslogtreecommitdiff
path: root/src/mongo/scripting/mozjs/numberlong.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mongo/scripting/mozjs/numberlong.cpp')
-rw-r--r--src/mongo/scripting/mozjs/numberlong.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mongo/scripting/mozjs/numberlong.cpp b/src/mongo/scripting/mozjs/numberlong.cpp
index 32163e6c31e..5150d3134f7 100644
--- a/src/mongo/scripting/mozjs/numberlong.cpp
+++ b/src/mongo/scripting/mozjs/numberlong.cpp
@@ -130,6 +130,13 @@ void NumberLongInfo::Functions::floatApprox::call(JSContext* cx, JS::CallArgs ar
ValueReader(cx, args.rval()).fromDouble(numLong);
}
+void NumberLongInfo::Functions::exactValueString::call(JSContext* cx, JS::CallArgs args) {
+ str::stream ss;
+ int64_t val = NumberLongInfo::ToNumberLong(cx, args.thisv());
+ ss << val;
+ ValueReader(cx, args.rval()).fromStringData(ss.operator std::string());
+}
+
void NumberLongInfo::Functions::top::call(JSContext* cx, JS::CallArgs args) {
auto numULong = static_cast<uint64_t>(NumberLongInfo::ToNumberLong(cx, args.thisv()));
ValueReader(cx, args.rval()).fromDouble(numULong >> 32);
@@ -236,6 +243,17 @@ void NumberLongInfo::postInstall(JSContext* cx, JS::HandleObject global, JS::Han
JSPROP_ENUMERATE)) {
uasserted(ErrorCodes::JSInterpreterFailure, "Failed to JS_DefinePropertyById");
}
+
+ // exactValueString
+ if (!JS_DefinePropertyById(
+ cx,
+ proto,
+ getScope(cx)->getInternedStringId(InternedString::exactValueString),
+ smUtils::wrapConstrainedMethod<Functions::exactValueString, false, NumberLongInfo>,
+ nullptr,
+ JSPROP_ENUMERATE)) {
+ uasserted(ErrorCodes::JSInterpreterFailure, "Failed to JS_DefinePropertyById");
+ }
}
} // namespace mozjs