From 557e912d9a9914bd1962ef632d146f760f5ffa39 Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Fri, 25 Aug 2023 04:00:54 -0700 Subject: Fix assertion failure with sourcemaps in multi-threaded transpiler (#4321) Co-authored-by: Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> --- src/bun.js/javascript.zig | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) (limited to 'src/bun.js/javascript.zig') diff --git a/src/bun.js/javascript.zig b/src/bun.js/javascript.zig index 96e954fa4..01f6383af 100644 --- a/src/bun.js/javascript.zig +++ b/src/bun.js/javascript.zig @@ -182,6 +182,27 @@ pub const SavedSourceMap = struct { pub const SourceMapHandler = js_printer.SourceMapHandler.For(SavedSourceMap, onSourceMapChunk); + pub fn deinit(this: *SavedSourceMap) void { + { + this.mutex.lock(); + var iter = this.map.valueIterator(); + while (iter.next()) |val| { + var value = Value.from(val.*); + if (value.get(ParsedSourceMap)) |source_map_| { + var source_map: *ParsedSourceMap = source_map_; + source_map.deinit(default_allocator); + } else if (value.get(SavedMappings)) |saved_mappings| { + var saved = SavedMappings{ .data = @as([*]u8, @ptrCast(saved_mappings)) }; + saved.deinit(); + } + } + + this.mutex.unlock(); + } + + this.map.deinit(); + } + pub fn putMappings(this: *SavedSourceMap, source: logger.Source, mappings: MutableString) !void { this.mutex.lock(); defer this.mutex.unlock(); @@ -979,7 +1000,7 @@ pub const VirtualMachine = struct { .flush_list = std.ArrayList(string).init(allocator), .blobs = null, .origin = bundler.options.origin, - .saved_source_map_table = SavedSourceMap.HashTable.init(allocator), + .saved_source_map_table = SavedSourceMap.HashTable.init(bun.default_allocator), .source_mappings = undefined, .macros = MacroMap.init(allocator), .macro_entry_points = @TypeOf(vm.macro_entry_points).init(allocator), @@ -1082,7 +1103,7 @@ pub const VirtualMachine = struct { .flush_list = std.ArrayList(string).init(allocator), .blobs = if (opts.args.serve orelse false) try Blob.Group.init(allocator) else null, .origin = bundler.options.origin, - .saved_source_map_table = SavedSourceMap.HashTable.init(allocator), + .saved_source_map_table = SavedSourceMap.HashTable.init(bun.default_allocator), .source_mappings = undefined, .macros = MacroMap.init(allocator), .macro_entry_points = @TypeOf(vm.macro_entry_points).init(allocator), @@ -1197,7 +1218,7 @@ pub const VirtualMachine = struct { .flush_list = std.ArrayList(string).init(allocator), .blobs = if (opts.args.serve orelse false) try Blob.Group.init(allocator) else null, .origin = bundler.options.origin, - .saved_source_map_table = SavedSourceMap.HashTable.init(allocator), + .saved_source_map_table = SavedSourceMap.HashTable.init(bun.default_allocator), .source_mappings = undefined, .macros = MacroMap.init(allocator), .macro_entry_points = @TypeOf(vm.macro_entry_points).init(allocator), @@ -1828,7 +1849,9 @@ pub const VirtualMachine = struct { } // TODO: - pub fn deinit(_: *VirtualMachine) void {} + pub fn deinit(this: *VirtualMachine) void { + this.source_mappings.deinit(); + } pub const ExceptionList = std.ArrayList(Api.JsException); -- cgit v1.2.3 value='dylan/callback-fulfilled-after-rejection'>dylan/callback-fulfilled-after-rejection Unnamed repository; edit this file 'description' to name the repository.
aboutsummaryrefslogtreecommitdiff
path: root/integration/bunjs-only-snippets/sleep.js (unfollow)
AgeCommit message (Expand)AuthorFilesLines
2022-03-17move some code aroundGravatar Jarred Sumner 3-189/+9
2022-03-17Update build-idGravatar Jarred Sumner 1-1/+1
2022-03-17optimize blob.text()Gravatar Jarred Sumner 1-83/+185
2022-03-17query_string_map -> urlGravatar Jarred Sumner 30-28/+405
2022-03-16Fix crash from checking if something is an object when it is undefinedbun-v0.0.72Gravatar Jarred Sumner 4-12/+12
2022-03-16Fix setTimeout on LinuxGravatar Jarred SUmner 1-5/+12
2022-03-16Increase from 4ms -> 40ms for timeoutGravatar Jarred SUmner 1-1/+1
2022-03-16Update README.mdGravatar Jarred Sumner 1-0/+1
2022-03-16llvm-stirp not workingGravatar Jarred Sumner 1-1/+0
2022-03-16Update MakefileGravatar Jarred Sumner 1-1/+1
2022-03-16Update Dockerfile.baseGravatar Jarred Sumner 1-0/+1
2022-03-16Update MakefileGravatar Jarred Sumner 1-2/+23
2022-03-16cleanup error printingGravatar Jarred Sumner 7-105/+193
2022-03-16Revert "Unlimited arguments in process.nextTick"Gravatar Jarred Sumner 1-38/+48
2022-03-16bun.lockbGravatar Jarred Sumner 3-0/+0
2022-03-16Update feature_flags.zigGravatar Jarred Sumner 1-0/+1
2022-03-16[bun.js] Bun.unsafe test should check the gcGravatar Jarred Sumner 1-4/+14
2022-03-16Update work_pool.zigGravatar Jarred Sumner 1-21/+28
2022-03-16Add a way to run serial tasks on a different threadGravatar Jarred Sumner 1-3/+65
2022-03-16fix crash when SyntaxError is thrown and we did not receive an ErrorInstance?Gravatar Jarred Sumner 1-18/+25
2022-03-16[bun.js] Fix release-mode test failures in HeadersGravatar Jarred Sumner 1-47/+42
2022-03-16Update ref_count.zigGravatar Jarred Sumner 1-2/+0
2022-03-15file is too bigjarred/replGravatar Jarred Sumner 1-113827/+0
2022-03-15Update Dockerfile.baseGravatar Jarred Sumner 1-1/+1
2022-03-15Add rust and lolhtml to dockerfileGravatar Jarred Sumner 2-0/+20
2022-03-15bump webkitGravatar Jarred Sumner 1-1/+1
2022-03-15Update WebKitGravatar Jarred Sumner 1-0/+0
2022-03-15:camera:Gravatar Jarred Sumner 60-799/+859
2022-03-15Fix test failureGravatar Jarred Sumner 1-15/+17
2022-03-15[bun:error] handle errors without a name or messageGravatar Jarred Sumner 1-6/+11
2022-03-15Update pool.zigGravatar Jarred Sumner 1-0/+1
2022-03-15Load .env by defaultGravatar Jarred Sumner 2-0/+8
2022-03-15mimalloc interpose is buggyGravatar Jarred Sumner 1-2/+25
2022-03-15higher max http requests for bun.jsGravatar Jarred Sumner 1-0/+29
2022-03-15zero copyGravatar Jarred Sumner 1-21/+15
2022-03-15Update javascript.zigGravatar Jarred Sumner 1-2/+0
2022-03-15[bun.js] utf8 console.{time, count, timeEnd, profile, profileEnd, count, cou...Gravatar Jarred Sumner 1-16/+16