authorgravatar for git@scottredig.comScott Redig <git@scottredig.com> 2024-10-07 01:16:20-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2024-11-22 18:39:17-05:00
logb2c62bcbf64a3ffa2af6a8e441f1c12e10c598ec
treeccf845de8f00f44d3dbdda603978967a7283f911
parent73dcd1914071984c5a2e7c195212404824dbfb9e

add assertLocked to std.debug.SafetyLock


2 files changed, 17 insertions(+), 3 deletions(-)

lib/std/debug.zig+16-2
......@@ -1531,9 +1531,9 @@ pub fn ConfigurableTrace(comptime size: usize, comptime stack_frame_count: usize
15311531}
15321532
15331533pub const SafetyLock = struct {
1534 state: State = .unlocked,
1534 state: State = if (runtime_safety) .unlocked else .unknown,
15351535
1536 pub const State = if (runtime_safety) enum { unlocked, locked } else enum { unlocked };
1536 pub const State = if (runtime_safety) enum { unlocked, locked } else enum { unknown };
15371537
15381538 pub fn lock(l: *SafetyLock) void {
15391539 if (!runtime_safety) return;
......@@ -1551,8 +1551,22 @@ pub const SafetyLock = struct {
15511551 if (!runtime_safety) return;
15521552 assert(l.state == .unlocked);
15531553 }
1554
1555 pub fn assertLocked(l: SafetyLock) void {
1556 if (!runtime_safety) return;
1557 assert(l.state == .locked);
1558 }
15541559};
15551560
1561test SafetyLock {
1562 var safety_lock: SafetyLock = .{};
1563 safety_lock.assertUnlocked();
1564 safety_lock.lock();
1565 safety_lock.assertLocked();
1566 safety_lock.unlock();
1567 safety_lock.assertUnlocked();
1568}
1569
15561570/// Detect whether the program is being executed in the Valgrind virtual machine.
15571571///
15581572/// When Valgrind integrations are disabled, this returns comptime-known false.
lib/std/hash_map.zig+1-1
......@@ -1692,7 +1692,7 @@ pub fn HashMapUnmanaged(
16921692 }
16931693
16941694 self.size = 0;
1695 self.pointer_stability = .{ .state = .unlocked };
1695 self.pointer_stability = .{};
16961696 std.mem.swap(Self, self, &map);
16971697 map.deinit(allocator);
16981698 }