From a568b495f306ad4c9ed523b9cb2a746e35bdd45f Mon Sep 17 00:00:00 2001 From: Ciro Spaciari Date: Tue, 15 Oct 2024 13:25:06 -0700 Subject: [PATCH] refactor --- src/bun.js/api/bun/h2_frame_parser.zig | 20 ++++++------------ src/bun.js/api/bun/lshpack.zig | 3 --- src/bun.js/bindings/BunHttp2CommonStrings.cpp | 7 +------ src/bun.js/bindings/BunHttp2CommonStrings.h | 21 +++---------------- src/bun.js/bindings/ZigGlobalObject.cpp | 12 ++++------- src/bun.js/bindings/c-bindings.cpp | 3 --- 6 files changed, 14 insertions(+), 52 deletions(-) diff --git a/src/bun.js/api/bun/h2_frame_parser.zig b/src/bun.js/api/bun/h2_frame_parser.zig index 5d3e47e35ce46..26c0dd44c264a 100644 --- a/src/bun.js/api/bun/h2_frame_parser.zig +++ b/src/bun.js/api/bun/h2_frame_parser.zig @@ -20,16 +20,12 @@ const BunSocket = union(enum) { tcp: *TCPSocket, tcp_writeonly: *TCPSocket, }; -pub const StringPair = extern struct { - key: JSC.JSValue, - value: JSC.JSValue, -}; -extern fn JSC__JSGlobalObject__getHTTP2CommonString(globalObject: *JSC.JSGlobalObject, hpack_index: u32) StringPair; +extern fn JSC__JSGlobalObject__getHTTP2CommonString(globalObject: *JSC.JSGlobalObject, hpack_index: u32) JSC.JSValue; -pub fn getHTTP2CommonString(globalObject: *JSC.JSGlobalObject, hpack_index: u32) ?StringPair { +pub fn getHTTP2CommonString(globalObject: *JSC.JSGlobalObject, hpack_index: u32) ?JSC.JSValue { if (hpack_index == 255) return null; const value = JSC__JSGlobalObject__getHTTP2CommonString(globalObject, hpack_index); - if (value.key.isEmptyOrUndefinedOrNull()) return null; + if (value.isEmptyOrUndefinedOrNull()) return null; return value; } const JSValue = JSC.JSValue; @@ -1804,13 +1800,9 @@ pub const H2FrameParser = struct { }; if (getHTTP2CommonString(globalObject, header.well_know)) |header_info| { - output.push(globalObject, header_info.key); - if (header.well_know_value) { - output.push(globalObject, header_info.value); - } else { - var header_value = bun.String.fromUTF8(header.value); - output.push(globalObject, header_value.transferToJS(globalObject)); - } + output.push(globalObject, header_info); + var header_value = bun.String.fromUTF8(header.value); + output.push(globalObject, header_value.transferToJS(globalObject)); } else { var header_name = bun.String.fromUTF8(header.name); output.push(globalObject, header_name.transferToJS(globalObject)); diff --git a/src/bun.js/api/bun/lshpack.zig b/src/bun.js/api/bun/lshpack.zig index 9ecef503917fa..9fdb1cab5352c 100644 --- a/src/bun.js/api/bun/lshpack.zig +++ b/src/bun.js/api/bun/lshpack.zig @@ -7,7 +7,6 @@ const lshpack_header = extern struct { value_len: usize = 0, never_index: bool = false, hpack_index: u16 = 255, - hpack_index_withvalue: bool = false, }; /// wrapper implemented at src/bun.js/bindings/c-bindings.cpp @@ -21,7 +20,6 @@ pub const HPACK = extern struct { value: []const u8, never_index: bool, well_know: u16, - well_know_value: bool, // offset of the next header position in src next: usize, }; @@ -45,7 +43,6 @@ pub const HPACK = extern struct { .next = offset, .never_index = header.never_index, .well_know = header.hpack_index, - .well_know_value = header.hpack_index_withvalue, }; } diff --git a/src/bun.js/bindings/BunHttp2CommonStrings.cpp b/src/bun.js/bindings/BunHttp2CommonStrings.cpp index 03a39f7363719..e1eba23d6aa1d 100644 --- a/src/bun.js/bindings/BunHttp2CommonStrings.cpp +++ b/src/bun.js/bindings/BunHttp2CommonStrings.cpp @@ -15,15 +15,10 @@ using namespace JSC; this->m_names[idx].initLater( \ [](const JSC::LazyProperty::Initializer& init) { \ init.set(jsOwnedString(init.vm, key)); \ - }); \ - this->m_values[idx].initLater( \ - [](const JSC::LazyProperty::Initializer& init) { \ - init.set(jsOwnedString(init.vm, value)); \ }); #define HTTP2_COMMON_STRINGS_LAZY_PROPERTY_VISITOR(name, key, value, idx) \ - this->m_names[idx].visit(visitor); \ - this->m_values[idx].visit(visitor); + this->m_names[idx].visit(visitor); void Http2CommonStrings::initialize() { diff --git a/src/bun.js/bindings/BunHttp2CommonStrings.h b/src/bun.js/bindings/BunHttp2CommonStrings.h index c1ac6d5215ff0..209cc4ffdf89d 100644 --- a/src/bun.js/bindings/BunHttp2CommonStrings.h +++ b/src/bun.js/bindings/BunHttp2CommonStrings.h @@ -71,10 +71,6 @@ macro(wwwAuthenticate, "www-authenticate"_s, ""_s, 60) JSC::JSString* name##String(JSC::JSGlobalObject* globalObject) \ { \ return m_names[idx].getInitializedOnMainThread(globalObject); \ - } \ - JSC::JSString* name##StringValue(JSC::JSGlobalObject* globalObject) \ - { \ - return m_values[idx].getInitializedOnMainThread(globalObject); \ } namespace Bun { @@ -82,10 +78,6 @@ namespace Bun { using namespace JSC; class Http2CommonStrings { - struct StringPair { - JSC::JSString* key; - JSC::JSString* value; - }; public: typedef JSC::JSString* (*commonStringInitializer)(Http2CommonStrings*, JSC::JSGlobalObject* globalObject); @@ -97,23 +89,16 @@ class Http2CommonStrings { template void visit(Visitor& visitor); - StringPair getStringFromHPackIndex(uint16_t index, JSC::JSGlobalObject* globalObject) + JSC::JSString* getStringFromHPackIndex(uint16_t index, JSC::JSGlobalObject* globalObject) { if (index > 60) { - return StringPair { - .key = nullptr, - .value = nullptr, - }; + return nullptr; } - return StringPair { - .key = m_names[index].getInitializedOnMainThread(globalObject), - .value = m_values[index].getInitializedOnMainThread(globalObject), - }; + return m_names[index].getInitializedOnMainThread(globalObject); } private: JSC::LazyProperty m_names[61]; - JSC::LazyProperty m_values[61]; }; } // namespace Bun diff --git a/src/bun.js/bindings/ZigGlobalObject.cpp b/src/bun.js/bindings/ZigGlobalObject.cpp index 4bd056310b61f..a4598fb061e8a 100644 --- a/src/bun.js/bindings/ZigGlobalObject.cpp +++ b/src/bun.js/bindings/ZigGlobalObject.cpp @@ -3609,17 +3609,13 @@ extern "C" void JSC__JSGlobalObject__drainMicrotasks(Zig::GlobalObject* globalOb globalObject->drainMicrotasks(); } -struct Http2StringPair { - EncodedJSValue key; - EncodedJSValue value; -}; -extern "C" Http2StringPair JSC__JSGlobalObject__getHTTP2CommonString(Zig::GlobalObject* globalObject, uint32_t hpack_index) +extern "C" EncodedJSValue JSC__JSGlobalObject__getHTTP2CommonString(Zig::GlobalObject* globalObject, uint32_t hpack_index) { auto value = globalObject->http2CommonStrings().getStringFromHPackIndex(hpack_index, globalObject); - if (value.key != nullptr) { - return Http2StringPair { .key = JSValue::encode(value.key), .value = JSValue::encode(value.value) }; + if (value != nullptr) { + return JSValue::encode(value); } - return Http2StringPair { .key = JSValue::encode(JSValue::JSUndefined), .value = JSValue::encode(JSValue::JSUndefined) }; + return JSValue::encode(JSValue::JSUndefined); } template diff --git a/src/bun.js/bindings/c-bindings.cpp b/src/bun.js/bindings/c-bindings.cpp index 2993f26eb4522..c0fbebfbddc7e 100644 --- a/src/bun.js/bindings/c-bindings.cpp +++ b/src/bun.js/bindings/c-bindings.cpp @@ -254,7 +254,6 @@ typedef struct { size_t value_len; bool never_index; uint16_t hpack_index; - bool hpack_index_withvalue; } lshpack_header; lshpack_wrapper* lshpack_wrapper_init(lshpack_wrapper_alloc alloc, lshpack_wrapper_free free, unsigned max_capacity) @@ -316,10 +315,8 @@ size_t lshpack_wrapper_decode(lshpack_wrapper* self, output->never_index = (hdr.flags & LSXPACK_NEVER_INDEX) != 0; if (hdr.hpack_index != LSHPACK_HDR_UNKNOWN && hdr.hpack_index <= LSHPACK_HDR_WWW_AUTHENTICATE) { output->hpack_index = hdr.hpack_index - 1; - output->hpack_index_withvalue = false; // TODO: discover a way of checking if the value also matchs } else { output->hpack_index = 255; - output->hpack_index_withvalue = false; } return s - src; }