aboutsummaryrefslogtreecommitdiff
path: root/src/Module.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2021-11-09 18:27:12 -0700
committerAndrew Kelley <andrew@ziglang.org>2021-11-09 18:31:03 -0700
commit008b0ec5e58fc7e31f3b989868a7d1ea4df3f41d (patch)
tree99374a7b0f5dc0bf56fc5daff702eecb7758d4f5 /src/Module.zig
parent65e518e8e8ab74b276c5a284caebfad4e5aa502c (diff)
downloadzig-008b0ec5e58fc7e31f3b989868a7d1ea4df3f41d.tar.gz
zig-008b0ec5e58fc7e31f3b989868a7d1ea4df3f41d.zip
std.Thread.Mutex: change API to lock() and unlock()
This is a breaking change. Before, usage looked like this: ```zig const held = mutex.acquire(); defer held.release(); ``` Now it looks like this: ```zig mutex.lock(); defer mutex.unlock(); ``` The `Held` type was an idea to make mutexes slightly safer by making it more difficult to forget to release an aquired lock. However, this ultimately caused more problems than it solved, when any data structures needed to store a held mutex. Simplify everything by reducing the API down to the primitives: lock() and unlock(). Closes #8051 Closes #8246 Closes #10105
Diffstat (limited to 'src/Module.zig')
-rw-r--r--src/Module.zig20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/Module.zig b/src/Module.zig
index c975fc1c36..cc5209a217 100644
--- a/src/Module.zig
+++ b/src/Module.zig
@@ -2629,8 +2629,8 @@ pub fn astGenFile(mod: *Module, file: *File) !void {
// TODO don't report compile errors until Sema @importFile
if (file.zir.hasCompileErrors()) {
{
- const lock = comp.mutex.acquire();
- defer lock.release();
+ comp.mutex.lock();
+ defer comp.mutex.unlock();
try mod.failed_files.putNoClobber(gpa, file, null);
}
file.status = .astgen_failure;
@@ -2742,8 +2742,8 @@ pub fn astGenFile(mod: *Module, file: *File) !void {
}
{
- const lock = comp.mutex.acquire();
- defer lock.release();
+ comp.mutex.lock();
+ defer comp.mutex.unlock();
try mod.failed_files.putNoClobber(gpa, file, err_msg);
}
file.status = .parse_failure;
@@ -2817,8 +2817,8 @@ pub fn astGenFile(mod: *Module, file: *File) !void {
if (file.zir.hasCompileErrors()) {
{
- const lock = comp.mutex.acquire();
- defer lock.release();
+ comp.mutex.lock();
+ defer comp.mutex.unlock();
try mod.failed_files.putNoClobber(gpa, file, null);
}
file.status = .astgen_failure;
@@ -3701,8 +3701,8 @@ pub fn detectEmbedFileUpdate(mod: *Module, embed_file: *EmbedFile) !void {
embed_file.stat_mtime = stat.mtime;
embed_file.stat_inode = stat.inode;
- const lock = mod.comp.mutex.acquire();
- defer lock.release();
+ mod.comp.mutex.lock();
+ defer mod.comp.mutex.unlock();
try mod.comp.work_queue.writeItem(.{ .update_embed_file = embed_file });
}
@@ -4459,8 +4459,8 @@ fn lockAndClearFileCompileError(mod: *Module, file: *File) void {
switch (file.status) {
.success_zir, .retryable_failure => {},
.never_loaded, .parse_failure, .astgen_failure => {
- const lock = mod.comp.mutex.acquire();
- defer lock.release();
+ mod.comp.mutex.lock();
+ defer mod.comp.mutex.unlock();
if (mod.failed_files.fetchSwapRemove(file)) |kv| {
if (kv.value) |msg| msg.destroy(mod.gpa); // Delete previous error message.
}