aboutsummaryrefslogtreecommitdiff
path: root/src/json_parser.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2023-04-22 19:44:23 -0700
committerGravatar GitHub <noreply@github.com> 2023-04-22 19:44:23 -0700
commit4b24bb464c5a54c728bee8c9b4aa30a60c3fb7d4 (patch)
tree7983dd2d5ba18f9a6111be2e7e6d17f69d170bba /src/json_parser.zig
parent7d6b5f5358617f92ace6f3103dd835ddff73f92a (diff)
downloadbun-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.zig10
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;