From 1d79703d24c5e8271daec9028c825d11c27dbf7d Mon Sep 17 00:00:00 2001 From: Jarred Sumner Date: Mon, 11 Apr 2022 19:09:14 -0700 Subject: slight perf improvement to concurrently queueing tasks --- src/javascript/jsc/javascript.zig | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/javascript/jsc/javascript.zig') 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); -- cgit v1.2.3