diff options
author | 2022-01-05 13:11:56 -0800 | |
---|---|---|
committer | 2022-01-05 13:12:11 -0800 | |
commit | 3cd129544ea9bb9dd17d30aa26572b90568e1e42 (patch) | |
tree | 2077920a4c7294911c52a904da2dbb03c6349965 /src/js_parser/js_parser.zig | |
parent | 1004e924ff2d53b14cb2e3a5c32ed0e4135fd89a (diff) | |
download | bun-3cd129544ea9bb9dd17d30aa26572b90568e1e42.tar.gz bun-3cd129544ea9bb9dd17d30aa26572b90568e1e42.tar.zst bun-3cd129544ea9bb9dd17d30aa26572b90568e1e42.zip |
[JS Parser] Reduce memory usage by ~8%
Diffstat (limited to 'src/js_parser/js_parser.zig')
-rw-r--r-- | src/js_parser/js_parser.zig | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/js_parser/js_parser.zig b/src/js_parser/js_parser.zig index 3a64fd79b..7294bbe4d 100644 --- a/src/js_parser/js_parser.zig +++ b/src/js_parser/js_parser.zig @@ -60,7 +60,7 @@ pub const StringHashMap = _hash_map.StringHashMap; pub const AutoHashMap = _hash_map.AutoHashMap; const StringHashMapUnamanged = _hash_map.StringHashMapUnamanged; const ObjectPool = @import("../pool.zig").ObjectPool; - +const SymbolPool = js_ast.SymbolPool; const NodeFallbackModules = @import("../node_fallbacks.zig"); // Dear reader, // There are some things you should know about this file to make it easier for humans to read @@ -2933,7 +2933,8 @@ pub fn NewParser( forbid_suffix_after_as_loc: logger.Loc = logger.Loc.Empty, current_scope: *js_ast.Scope = undefined, scopes_for_current_part: List(*js_ast.Scope) = .{}, - symbols: List(js_ast.Symbol) = .{}, + symbols: ListManaged(js_ast.Symbol) = undefined, + symbol_pool_node: *SymbolPool.Node = undefined, ts_use_counts: List(u32) = .{}, exports_ref: Ref = Ref.None, require_ref: Ref = Ref.None, @@ -5035,7 +5036,7 @@ pub fn NewParser( pub fn newSymbol(p: *P, kind: Symbol.Kind, identifier: string) !Ref { const inner_index = Ref.toInt(p.symbols.items.len); - try p.symbols.append(p.allocator, Symbol{ + try p.symbols.append(Symbol{ .kind = kind, .original_name = identifier, .link = null, @@ -12197,7 +12198,7 @@ pub fn NewParser( MacroVisitor{ .p = p, .loc = expr.loc }, ) catch |err| { if (err == error.MacroFailed) { - p.log.addError(p.source, expr.loc, "error in macro") catch unreachable; + p.log.addError(p.source, expr.loc, "macro threw exception") catch unreachable; } else { p.log.addErrorFmt(p.source, expr.loc, p.allocator, "{s} error in macro", .{@errorName(err)}) catch unreachable; } @@ -15143,6 +15144,8 @@ pub fn NewParser( // } } + p.symbol_pool_node.data = p.symbols; + return js_ast.Ast{ .runtime_imports = p.runtime_imports, .parts = parts, @@ -15170,6 +15173,7 @@ pub fn NewParser( (p.symbols.items[p.runtime_imports.__require.?.ref.inner_index].use_count_estimate > 0) else false, + .symbol_pool = p.symbol_pool_node, // .top_Level_await_keyword = p.top_level_await_keyword, }; } @@ -15227,6 +15231,10 @@ pub fn NewParser( .lexer = lexer, }; + this.symbol_pool_node = SymbolPool.get(_global.default_allocator); + this.symbols = this.symbol_pool_node.data; + this.symbols.clearRetainingCapacity(); + if (comptime !only_scan_imports_and_do_not_visit) { this.import_records = @TypeOf(this.import_records).init(allocator); this.named_imports = NamedImportsType.init(allocator); |