diff options
| author | Vexu <git@vexu.eu> | 2020-03-12 22:42:01 +0200 |
|---|---|---|
| committer | Vexu <git@vexu.eu> | 2020-03-12 22:42:01 +0200 |
| commit | 71d776c3be91f6b4e982b45fbfe03e3696a397f5 (patch) | |
| tree | de9487bd41b3c646f19018e03285730b15c6142d /lib | |
| parent | 6dde769279aaa0cc09d13dd0670b74a8dd24f547 (diff) | |
| download | zig-71d776c3be91f6b4e982b45fbfe03e3696a397f5.tar.gz zig-71d776c3be91f6b4e982b45fbfe03e3696a397f5.zip | |
add note to disabled tests, improve comptime cmpxchg
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/std/atomic/stack.zig | 10 | ||||
| -rw-r--r-- | lib/std/event/channel.zig | 9 |
2 files changed, 8 insertions, 11 deletions
diff --git a/lib/std/atomic/stack.zig b/lib/std/atomic/stack.zig index 07cb16e450..092dce15b0 100644 --- a/lib/std/atomic/stack.zig +++ b/lib/std/atomic/stack.zig @@ -38,8 +38,8 @@ pub fn Stack(comptime T: type) type { node.next = self.root; self.root = node; } else { - while (@atomicRmw(bool, &self.lock, .Xchg, true, .SeqCst) != false) {} - defer assert(@atomicRmw(bool, &self.lock, .Xchg, false, .SeqCst) == true); + while (@atomicRmw(bool, &self.lock, .Xchg, true, .SeqCst)) {} + defer assert(@atomicRmw(bool, &self.lock, .Xchg, false, .SeqCst)); node.next = self.root; self.root = node; @@ -52,8 +52,8 @@ pub fn Stack(comptime T: type) type { self.root = root.next; return root; } else { - while (@atomicRmw(bool, &self.lock, .Xchg, true, .SeqCst) != false) {} - defer assert(@atomicRmw(bool, &self.lock, .Xchg, false, .SeqCst) == true); + while (@atomicRmw(bool, &self.lock, .Xchg, true, .SeqCst)) {} + defer assert(@atomicRmw(bool, &self.lock, .Xchg, false, .SeqCst)); const root = self.root orelse return null; self.root = root.next; @@ -164,7 +164,7 @@ fn startPuts(ctx: *Context) u8 { fn startGets(ctx: *Context) u8 { while (true) { - const last = @atomicLoad(bool, &ctx.puts_done, .SeqCst) == true; + const last = @atomicLoad(bool, &ctx.puts_done, .SeqCst); while (ctx.stack.pop()) |node| { std.time.sleep(1); // let the os scheduler be our fuzz diff --git a/lib/std/event/channel.zig b/lib/std/event/channel.zig index 355bd78292..83c77bcac5 100644 --- a/lib/std/event/channel.zig +++ b/lib/std/event/channel.zig @@ -169,8 +169,7 @@ pub fn Channel(comptime T: type) type { lock: while (true) { // set the lock flag - const prev_lock = @atomicRmw(bool, &self.dispatch_lock, .Xchg, true, .SeqCst); - if (prev_lock != 0) return; + if (@atomicRmw(bool, &self.dispatch_lock, .Xchg, true, .SeqCst)) return; // clear the need_dispatch flag since we're about to do it @atomicStore(bool, &self.need_dispatch, false, .SeqCst); @@ -250,11 +249,9 @@ pub fn Channel(comptime T: type) type { } // clear need-dispatch flag - const need_dispatch = @atomicRmw(bool, &self.need_dispatch, .Xchg, false, .SeqCst); - if (need_dispatch) continue; + if (@atomicRmw(bool, &self.need_dispatch, .Xchg, false, .SeqCst)) continue; - const my_lock = @atomicRmw(bool, &self.dispatch_lock, .Xchg, false, .SeqCst); - assert(my_lock); + assert(@atomicRmw(bool, &self.dispatch_lock, .Xchg, false, .SeqCst)); // we have to check again now that we unlocked if (@atomicLoad(bool, &self.need_dispatch, .SeqCst)) continue :lock; |
