mirror of
https://codeberg.org/ziglang/zig.git
synced 2026-03-08 06:24:44 +01:00
add assertLocked to std.debug.SafetyLock
This commit is contained in:
parent
73dcd19140
commit
b2c62bcbf6
2 changed files with 17 additions and 3 deletions
|
|
@ -1531,9 +1531,9 @@ pub fn ConfigurableTrace(comptime size: usize, comptime stack_frame_count: usize
|
|||
}
|
||||
|
||||
pub const SafetyLock = struct {
|
||||
state: State = .unlocked,
|
||||
state: State = if (runtime_safety) .unlocked else .unknown,
|
||||
|
||||
pub const State = if (runtime_safety) enum { unlocked, locked } else enum { unlocked };
|
||||
pub const State = if (runtime_safety) enum { unlocked, locked } else enum { unknown };
|
||||
|
||||
pub fn lock(l: *SafetyLock) void {
|
||||
if (!runtime_safety) return;
|
||||
|
|
@ -1551,8 +1551,22 @@ pub const SafetyLock = struct {
|
|||
if (!runtime_safety) return;
|
||||
assert(l.state == .unlocked);
|
||||
}
|
||||
|
||||
pub fn assertLocked(l: SafetyLock) void {
|
||||
if (!runtime_safety) return;
|
||||
assert(l.state == .locked);
|
||||
}
|
||||
};
|
||||
|
||||
test SafetyLock {
|
||||
var safety_lock: SafetyLock = .{};
|
||||
safety_lock.assertUnlocked();
|
||||
safety_lock.lock();
|
||||
safety_lock.assertLocked();
|
||||
safety_lock.unlock();
|
||||
safety_lock.assertUnlocked();
|
||||
}
|
||||
|
||||
/// Detect whether the program is being executed in the Valgrind virtual machine.
|
||||
///
|
||||
/// When Valgrind integrations are disabled, this returns comptime-known false.
|
||||
|
|
|
|||
|
|
@ -1692,7 +1692,7 @@ pub fn HashMapUnmanaged(
|
|||
}
|
||||
|
||||
self.size = 0;
|
||||
self.pointer_stability = .{ .state = .unlocked };
|
||||
self.pointer_stability = .{};
|
||||
std.mem.swap(Self, self, &map);
|
||||
map.deinit(allocator);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue