| ... | ... | @@ -154,7 +154,7 @@ fn atomicExchangeFn(comptime T: type) fn (*T, T, i32) callconv(.C) T { |
| 154 | 154 | if (@sizeOf(T) > largest_atomic_size) { |
| 155 | 155 | var sl = spinlocks.get(@ptrToInt(ptr)); |
| 156 | 156 | defer sl.release(); |
| 157 | | var value = ptr.*; |
| 157 | const value = ptr.*; |
| 158 | 158 | ptr.* = val; |
| 159 | 159 | return value; |
| 160 | 160 | } else { |
| ... | ... | @@ -177,11 +177,12 @@ fn atomicCompareExchangeFn(comptime T: type) fn (*T, *T, T, i32, i32) callconv(. |
| 177 | 177 | if (@sizeOf(T) > largest_atomic_size) { |
| 178 | 178 | var sl = spinlocks.get(@ptrToInt(ptr)); |
| 179 | 179 | defer sl.release(); |
| 180 | | if (ptr.* == expected.*) { |
| 180 | const value = ptr.*; |
| 181 | if (value == expected.*) { |
| 181 | 182 | ptr.* = desired; |
| 182 | 183 | return 1; |
| 183 | 184 | } |
| 184 | | expected.* = ptr.*; |
| 185 | expected.* = value; |
| 185 | 186 | return 0; |
| 186 | 187 | } else { |
| 187 | 188 | if (@cmpxchgStrong(T, ptr, expected.*, desired, .SeqCst, .SeqCst)) |old_value| { |
| ... | ... | @@ -208,14 +209,14 @@ fn fetchFn(comptime T: type, comptime op: builtin.AtomicRmwOp) fn (*T, T, i32) c |
| 208 | 209 | var sl = spinlocks.get(@ptrToInt(ptr)); |
| 209 | 210 | defer sl.release(); |
| 210 | 211 | |
| 211 | | var value = ptr.*; |
| 212 | const value = ptr.*; |
| 212 | 213 | ptr.* = switch (op) { |
| 213 | | .Add => ptr.* +% val, |
| 214 | | .Sub => ptr.* -% val, |
| 215 | | .And => ptr.* & val, |
| 216 | | .Nand => ~(ptr.* & val), |
| 217 | | .Or => ptr.* | val, |
| 218 | | .Xor => ptr.* ^ val, |
| 214 | .Add => value +% val, |
| 215 | .Sub => value -% val, |
| 216 | .And => value & val, |
| 217 | .Nand => ~(value & val), |
| 218 | .Or => value | val, |
| 219 | .Xor => value ^ val, |
| 219 | 220 | else => @compileError("unsupported atomic op"), |
| 220 | 221 | }; |
| 221 | 222 | |