aboutsummaryrefslogtreecommitdiff
path: root/src/Compilation.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-12-20 15:37:58 -0700
committerAndrew Kelley <andrew@ziglang.org>2020-12-20 15:37:58 -0700
commit1d94a6893689ad1fb8e06308ae51603a6c8708a8 (patch)
tree4adb4cbf5e6764df65747fb3bae2c1640060eb89 /src/Compilation.zig
parent10d30838d1887a8585e79ad7a680d3067674c9d9 (diff)
downloadzig-1d94a6893689ad1fb8e06308ae51603a6c8708a8.tar.gz
zig-1d94a6893689ad1fb8e06308ae51603a6c8708a8.zip
add an option to compile zig in single-threaded mode
And enable it for Drone CI. I hate to do this, but I need to make progress on other fronts.
Diffstat (limited to 'src/Compilation.zig')
-rw-r--r--src/Compilation.zig12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/Compilation.zig b/src/Compilation.zig
index 1c27a589ee..23f67f5b37 100644
--- a/src/Compilation.zig
+++ b/src/Compilation.zig
@@ -1728,7 +1728,7 @@ fn workerUpdateCObject(
error.AnalysisFail => return,
else => {
{
- var lock = comp.mutex.acquire();
+ const lock = comp.mutex.acquire();
defer lock.release();
comp.failed_c_objects.ensureCapacity(comp.gpa, comp.failed_c_objects.items().len + 1) catch {
fatal("TODO handle this by setting c_object.status = oom failure", .{});
@@ -1759,7 +1759,7 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_comp_progress_node: *
if (c_object.clearStatus(comp.gpa)) {
// There was previous failure.
- var lock = comp.mutex.acquire();
+ const lock = comp.mutex.acquire();
defer lock.release();
comp.failed_c_objects.removeAssertDiscard(c_object);
}
@@ -1789,10 +1789,12 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_comp_progress_node: *
{
const is_collision = blk: {
- var lock = comp.mutex.acquire();
+ const bin_digest = man.hash.peekBin();
+
+ const lock = comp.mutex.acquire();
defer lock.release();
- const gop = try comp.c_object_cache_digest_set.getOrPut(comp.gpa, man.hash.peekBin());
+ const gop = try comp.c_object_cache_digest_set.getOrPut(comp.gpa, bin_digest);
break :blk gop.found_existing;
};
if (is_collision) {
@@ -2211,7 +2213,7 @@ fn failCObj(comp: *Compilation, c_object: *CObject, comptime format: []const u8,
fn failCObjWithOwnedErrorMsg(comp: *Compilation, c_object: *CObject, err_msg: *ErrorMsg) InnerError {
{
- var lock = comp.mutex.acquire();
+ const lock = comp.mutex.acquire();
defer lock.release();
{
errdefer err_msg.destroy(comp.gpa);