aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/bindings.cpp
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-21 00:49:54 -0700
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-08-21 00:49:54 -0700
commit97305b746146361a15def163b1b0138bd8b1b5fb (patch)
tree1a3405e066acb7c1d2d2e5371c9c1b286e7f6588 /src/bun.js/bindings/bindings.cpp
parent1fca65fdf60bcfd10f917dd371881c6e08752bba (diff)
downloadbun-97305b746146361a15def163b1b0138bd8b1b5fb.tar.gz
bun-97305b746146361a15def163b1b0138bd8b1b5fb.tar.zst
bun-97305b746146361a15def163b1b0138bd8b1b5fb.zip
Add a binding for creating atomic strings
Diffstat (limited to 'src/bun.js/bindings/bindings.cpp')
-rw-r--r--src/bun.js/bindings/bindings.cpp19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/bun.js/bindings/bindings.cpp b/src/bun.js/bindings/bindings.cpp
index 86ba683a8..ddef8c23a 100644
--- a/src/bun.js/bindings/bindings.cpp
+++ b/src/bun.js/bindings/bindings.cpp
@@ -1261,6 +1261,25 @@ JSC__JSValue ZigString__toValue(const ZigString* arg0, JSC__JSGlobalObject* arg1
return JSC::JSValue::encode(JSC::JSValue(JSC::jsOwnedString(arg1->vm(), Zig::toString(*arg0))));
}
+JSC__JSValue ZigString__toAtomicValue(const ZigString* arg0, JSC__JSGlobalObject* arg1)
+{
+ if (arg0->len == 0) {
+ return JSC::JSValue::encode(JSC::jsEmptyString(arg1->vm()));
+ }
+
+ if (isTaggedUTF16Ptr(arg0->ptr)) {
+ if (auto impl = WTF::AtomStringImpl::lookUp(reinterpret_cast<const UChar*>(untag(arg0->ptr)), arg0->len)) {
+ return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::String(WTFMove(impl))));
+ }
+ } else {
+ if (auto impl = WTF::AtomStringImpl::lookUp(untag(arg0->ptr), arg0->len)) {
+ return JSC::JSValue::encode(JSC::jsString(arg1->vm(), WTF::String(WTFMove(impl))));
+ }
+ }
+
+ return JSC::JSValue::encode(JSC::JSValue(JSC::jsString(arg1->vm(), makeAtomString(Zig::toStringCopy(*arg0)))));
+}
+
JSC__JSValue ZigString__to16BitValue(const ZigString* arg0, JSC__JSGlobalObject* arg1)
{
auto str = WTF::String::fromUTF8(arg0->ptr, arg0->len);