diff options
author | 2021-09-17 18:37:26 -0700 | |
---|---|---|
committer | 2021-09-17 18:37:26 -0700 | |
commit | 9ae35ec5811f7395f98988ccdcd07395cd731bb0 (patch) | |
tree | 04cd0dfaeb3f42d48b671201b4529af3357bcedc /src | |
parent | b1ca1eb228dd3a1e1be0dd5feae06ed1b631b38e (diff) | |
download | bun-v0.0.21.tar.gz bun-v0.0.21.tar.zst bun-v0.0.21.zip |
Slightly improve JSX decoding perfbun-v0.0.21
Diffstat (limited to '')
-rw-r--r-- | src/js_lexer.zig | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/js_lexer.zig b/src/js_lexer.zig index 4f58f4431..687d20409 100644 --- a/src/js_lexer.zig +++ b/src/js_lexer.zig @@ -2071,8 +2071,17 @@ pub const Lexer = struct { } } + threadlocal var jsx_decode_buf: std.ArrayList(u16) = undefined; + threadlocal var jsx_decode_init = false; pub fn fixWhitespaceAndDecodeJSXEntities(lexer: *LexerType, text: string) !JavascriptString { - var decoded = std.ArrayList(u16).init(lexer.allocator); + if (!jsx_decode_init) { + jsx_decode_init = true; + jsx_decode_buf = std.ArrayList(u16).init(default_allocator); + } + jsx_decode_buf.clearRetainingCapacity(); + + var decoded = jsx_decode_buf; + defer jsx_decode_buf = decoded; var decoded_ptr = &decoded; var i: u32 = 0; var after_last_non_whitespace: ?u32 = null; @@ -2129,7 +2138,7 @@ pub const Lexer = struct { try decodeJSXEntities(lexer, text[start..text.len], decoded_ptr); } - return decoded.toOwnedSlice(); + return decoded.items; } pub fn decodeJSXEntities(lexer: *LexerType, text: string, out: *std.ArrayList(u16)) !void { |