aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/javascript/jsc/javascript.zig10
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);