diff options
| author | 2021-08-03 19:04:24 -0700 | |
|---|---|---|
| committer | 2021-08-03 19:04:24 -0700 | |
| commit | 58fd17867d661a8eb162efec7d39a6ab1c0fd6fd (patch) | |
| tree | 1ad2e204087b8b77900d7a26147c58752560b86d /src/main_javascript.zig | |
| parent | 3b684308c3153a6ca84faa0fecc49b76bbf941a8 (diff) | |
| download | bun-58fd17867d661a8eb162efec7d39a6ab1c0fd6fd.tar.gz bun-58fd17867d661a8eb162efec7d39a6ab1c0fd6fd.tar.zst bun-58fd17867d661a8eb162efec7d39a6ab1c0fd6fd.zip | |
Threader
Former-commit-id: a13dd6402f54527e87e9afdbbf48e5ff1501c8f9
Diffstat (limited to 'src/main_javascript.zig')
| -rw-r--r-- | src/main_javascript.zig | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/src/main_javascript.zig b/src/main_javascript.zig index 97bc012d3..f5976e304 100644 --- a/src/main_javascript.zig +++ b/src/main_javascript.zig @@ -166,7 +166,7 @@ pub const Cli = struct { var diag = clap.Diagnostic{}; - var args = clap.parse(clap.Help, ¶ms, .{ .diagnostic = &diag }) catch |err| { + var args = clap.parse(clap.Help, ¶ms, .{ .diagnostic = &diag, .allocator = allocator }) catch |err| { // Report useful error and exit diag.report(stderr.writer(), err) catch {}; return err; @@ -365,6 +365,35 @@ pub const Cli = struct { pub const src = "var headers = new Headers(); headers.set(\"hey\", \"hi\"); console.log(headers.get(\"hey\")); \"HELLO\";"; }; + pub fn Threader(comptime Stdout: type, comptime Stderr: type) type { + return struct { + allocator: *std.mem.Allocator, + stdout: Stdout, + stderr: Stderr, + args: Api.TransformOptions, + pub fn spawn(this: @This()) !void { + try alloc.setup(std.heap.c_allocator); + var stdout = std.io.getStdOut(); + // var stdout = std.io.bufferedWriter(stdout_file.writer()); + var stderr = std.io.getStdErr(); + // var stderr = std.io.bufferedWriter(stderr_file.writer()); + var output_source = Output.Source.init(stdout, stderr); + // defer stdout.flush() catch {}; + // defer stderr.flush() catch {}; + Output.Source.set(&output_source); + Output.enable_ansi_colors = stderr.isTty(); + + var log = logger.Log.init(this.allocator); + + var vm = try VirtualMachine.init(this.allocator, this.args, null, &log); + var promise = try vm.loadEntryPoint(vm.bundler.options.entry_points[0]); + if (promise.status(vm.global.vm()) == js.JSPromise.Status.Rejected) { + vm.defaultErrorHandler(promise.result(vm.global.vm())); + } + } + }; + } + pub fn start(allocator: *std.mem.Allocator, stdout: anytype, stderr: anytype) anyerror!void { const start_time = std.time.nanoTimestamp(); var log = logger.Log.init(allocator); @@ -377,17 +406,16 @@ pub const Cli = struct { // var results = try bundler.Bundler.bundle(allocator, &log, args); // var file = results.output_files[0]; - var vm = try VirtualMachine.init(allocator, args, null, &log); + // var resolved_entry_point = try vm.bundler.resolver.resolve( // vm.bundler.fs.top_level_dir, // vm.bundler.normalizeEntryPointPath(vm.bundler.options.entry_points[0]), // .entry_point, // ); - - var promise = try vm.loadEntryPoint(vm.bundler.options.entry_points[0]); - if (promise.status(vm.global.vm()) == js.JSPromise.Status.Rejected) { - vm.defaultRejectionHandler(promise.result(vm.global.vm())); - } + const Threadable = Threader(@TypeOf(stdout), @TypeOf(stderr)); + const runner = Threadable{ .allocator = allocator, .stdout = stdout, .stderr = stderr, .args = args }; + var thread = try std.Thread.spawn(.{}, Threadable.spawn, .{runner}); + thread.join(); } }; |
