aboutsummaryrefslogtreecommitdiff
path: root/src/bun.js/bindings/helpers.h
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-30 05:49:01 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2022-11-30 05:49:01 -0800
commit6213a91f058cc461fb916d479f03f602c552c377 (patch)
tree5442b8e30a1eebfda378586913dd56a27bd3ba88 /src/bun.js/bindings/helpers.h
parentf999bdca26256b7ad42d93268c34362b251330c2 (diff)
downloadbun-6213a91f058cc461fb916d479f03f602c552c377.tar.gz
bun-6213a91f058cc461fb916d479f03f602c552c377.tar.zst
bun-6213a91f058cc461fb916d479f03f602c552c377.zip
[wip internal] Introduce `bun.String` which wraps `WTF::String` and allows us to reuse themjarred/make-strings-better
Diffstat (limited to 'src/bun.js/bindings/helpers.h')
-rw-r--r--src/bun.js/bindings/helpers.h22
1 files changed, 21 insertions, 1 deletions
diff --git a/src/bun.js/bindings/helpers.h b/src/bun.js/bindings/helpers.h
index da97b4797..c52c17997 100644
--- a/src/bun.js/bindings/helpers.h
+++ b/src/bun.js/bindings/helpers.h
@@ -78,7 +78,7 @@ namespace Zig {
static const unsigned char* untag(const unsigned char* ptr)
{
return reinterpret_cast<const unsigned char*>(
- ((reinterpret_cast<uintptr_t>(ptr) & ~(static_cast<uint64_t>(1) << 63) & ~(static_cast<uint64_t>(1) << 62)) & ~(static_cast<uint64_t>(1) << 61)));
+ (((reinterpret_cast<uintptr_t>(ptr) & ~(static_cast<uint64_t>(1) << 63) & ~(static_cast<uint64_t>(1) << 62)) & ~(static_cast<uint64_t>(1) << 61)) & ~(static_cast<uint64_t>(1) << 60)));
}
static void* untagVoid(const unsigned char* ptr)
@@ -148,6 +148,26 @@ static const WTF::String toString(ZigString str)
reinterpret_cast<const UChar*>(untag(str.ptr)), str.len));
}
+static const WTF::String toStringStatic(ZigString str)
+{
+ if (str.len == 0 || str.ptr == nullptr) {
+ return WTF::String();
+ }
+ if (UNLIKELY(isTaggedUTF8Ptr(str.ptr))) {
+ abort();
+ }
+
+ if (isTaggedUTF16Ptr(str.ptr)) {
+ return WTF::String(WTF::ExternalStringImpl::createStatic(untag(str.ptr), str.len));
+ }
+
+
+ return WTF::String(WTF::ExternalStringImpl::createStatic(
+ reinterpret_cast<const UChar*>(untag(str.ptr)), str.len));
+
+
+}
+
static WTF::AtomString toAtomString(ZigString str)
{