diff options
author | 2022-04-11 19:09:14 -0700 | |
---|---|---|
committer | 2022-04-11 19:09:14 -0700 | |
commit | 1d79703d24c5e8271daec9028c825d11c27dbf7d (patch) | |
tree | 9a2553ee1295002d82c6957054506d3dcd560f0d /src/javascript | |
parent | f357377de9f5111dbc8e4aaa7c0f8ed073744b0a (diff) | |
download | bun-1d79703d24c5e8271daec9028c825d11c27dbf7d.tar.gz bun-1d79703d24c5e8271daec9028c825d11c27dbf7d.tar.zst bun-1d79703d24c5e8271daec9028c825d11c27dbf7d.zip |
slight perf improvement to concurrently queueing tasks
Diffstat (limited to 'src/javascript')
-rw-r--r-- | src/javascript/jsc/javascript.zig | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/javascript/jsc/javascript.zig b/src/javascript/jsc/javascript.zig index 978349d62..8073ad879 100644 --- a/src/javascript/jsc/javascript.zig +++ b/src/javascript/jsc/javascript.zig @@ -635,10 +635,12 @@ pub const VirtualMachine = struct { this.tasks.ensureUnusedCapacity(add) catch unreachable; { - @fence(.SeqCst); - while (this.concurrent_tasks.readItem()) |task| { - this.tasks.writeItemAssumeCapacity(task); - } + var writable = std.mem.sliceAsBytes(this.tasks.writableSlice(0)); + const readable = std.mem.sliceAsBytes(this.concurrent_tasks.readableSlice(0)); + @memcpy(writable.ptr, readable.ptr, @minimum(writable.len, readable.len)); + this.tasks.count += add; + this.concurrent_tasks.head = 0; + this.concurrent_tasks.count = 0; } _ = this.pending_tasks_count.fetchAdd(add, .Monotonic); |