diff options
author | 2023-04-22 19:44:23 -0700 | |
---|---|---|
committer | 2023-04-22 19:44:23 -0700 | |
commit | 4b24bb464c5a54c728bee8c9b4aa30a60c3fb7d4 (patch) | |
tree | 7983dd2d5ba18f9a6111be2e7e6d17f69d170bba /src/json_parser.zig | |
parent | 7d6b5f5358617f92ace6f3103dd835ddff73f92a (diff) | |
download | bun-4b24bb464c5a54c728bee8c9b4aa30a60c3fb7d4.tar.gz bun-4b24bb464c5a54c728bee8c9b4aa30a60c3fb7d4.tar.zst bun-4b24bb464c5a54c728bee8c9b4aa30a60c3fb7d4.zip |
Make `Bun.build` more reliable (#2718)
* One possible implementation to make `Bun.build` work better
* Pass allocator in
* Make our temporary buffers a little safer
* rename
* Fix memory corruption in symbol table
* Add support for deferred idle events in ThreadPool
* Free more memory
* Use a global allocator FS cache
* more `inline`
* Make duping keys optional in StringMap
* Close file handles more often
* Update router.zig
* wip possibly delete this commit
* Fix memory issues and reduce memory usage
* > 0.8
* Switch to AsyncIO.Waker and fix memory leak in JSBundleCompletionTask
* We don't need to clone this actually
* Fix error
* Format
* Fixup
* Fixup
---------
Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com>
Diffstat (limited to 'src/json_parser.zig')
-rw-r--r-- | src/json_parser.zig | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/json_parser.zig b/src/json_parser.zig index fa9af406f..913a16bd6 100644 --- a/src/json_parser.zig +++ b/src/json_parser.zig @@ -141,8 +141,13 @@ fn JSONLikeParser_( lexer: Lexer, log: *logger.Log, allocator: std.mem.Allocator, + list_allocator: std.mem.Allocator, pub fn init(allocator: std.mem.Allocator, source_: logger.Source, log: *logger.Log) !Parser { + return initWithListAllocator(allocator, allocator, source_, log); + } + + pub fn initWithListAllocator(allocator: std.mem.Allocator, list_allocator: std.mem.Allocator, source_: logger.Source, log: *logger.Log) !Parser { Expr.Data.Store.assert(); Stmt.Data.Store.assert(); @@ -150,6 +155,7 @@ fn JSONLikeParser_( .lexer = try Lexer.init(log, source_, allocator), .allocator = allocator, .log = log, + .list_allocator = list_allocator, }; } @@ -202,7 +208,7 @@ fn JSONLikeParser_( .t_open_bracket => { try p.lexer.next(); var is_single_line = !p.lexer.has_newline_before; - var exprs = std.ArrayList(Expr).init(p.allocator); + var exprs = std.ArrayList(Expr).init(p.list_allocator); while (p.lexer.token != .t_close_bracket) { if (exprs.items.len > 0) { @@ -235,7 +241,7 @@ fn JSONLikeParser_( .t_open_brace => { try p.lexer.next(); var is_single_line = !p.lexer.has_newline_before; - var properties = std.ArrayList(G.Property).init(p.allocator); + var properties = std.ArrayList(G.Property).init(p.list_allocator); const DuplicateNodeType = comptime if (opts.json_warn_duplicate_keys) *HashMapPool.LinkedList.Node else void; const HashMapType = comptime if (opts.json_warn_duplicate_keys) HashMapPool.HashMap else void; |