aboutsummaryrefslogtreecommitdiff
path: root/src/link.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2024-10-18 22:29:50 -0700
committerAndrew Kelley <andrew@ziglang.org>2024-10-23 16:27:38 -0700
commitc2898c436f0c858d10367b7631091f5a52cce76f (patch)
treebf2ca1d0dd9b02b530cb70545111091c916727b5 /src/link.zig
parent5ca54036ca0bc292ead681c03c8ac57e27a127db (diff)
downloadzig-c2898c436f0c858d10367b7631091f5a52cce76f.tar.gz
zig-c2898c436f0c858d10367b7631091f5a52cce76f.zip
branch fixes
Diffstat (limited to 'src/link.zig')
-rw-r--r--src/link.zig32
1 files changed, 5 insertions, 27 deletions
diff --git a/src/link.zig b/src/link.zig
index 8935ba0a90..bf4d182d35 100644
--- a/src/link.zig
+++ b/src/link.zig
@@ -1349,12 +1349,14 @@ pub const File = struct {
/// Does all the tasks in the queue. Runs in exactly one separate thread
/// from the rest of compilation. All tasks performed here are
/// single-threaded with respect to one another.
- pub fn flushTaskQueue(base: *File, prog_node: std.Progress.Node) void {
+ pub fn flushTaskQueue(base: *File, parent_prog_node: std.Progress.Node) void {
const comp = base.comp;
base.task_queue_safety.lock();
defer base.task_queue_safety.unlock();
+ const prog_node = parent_prog_node.start("Parse Linker Inputs", 0);
+ defer prog_node.end();
while (comp.link_task_queue.check()) |tasks| {
- for (tasks) |task| doTask(base, prog_node, task);
+ for (tasks) |task| doTask(base, task);
}
}
@@ -1374,16 +1376,11 @@ pub const File = struct {
load_input: Input,
};
- fn doTask(base: *File, parent_prog_node: std.Progress.Node, task: Task) void {
+ fn doTask(base: *File, task: Task) void {
const comp = base.comp;
switch (task) {
.load_explicitly_provided => {
- const prog_node = parent_prog_node.start("Linker Parse Input", comp.link_inputs.len);
- defer prog_node.end();
-
for (comp.link_inputs) |input| {
- const sub_node = prog_node.start(input.taskName(), 0);
- defer sub_node.end();
base.loadInput(input) catch |err| switch (err) {
error.LinkFailure => return, // error reported via link_diags
else => |e| {
@@ -1397,33 +1394,18 @@ pub const File = struct {
}
},
.load_object => |path| {
- const prog_node = parent_prog_node.start("Linker Parse Object", 0);
- defer prog_node.end();
- const sub_node = prog_node.start(path.basename(), 0);
- defer sub_node.end();
-
base.openLoadObject(path) catch |err| switch (err) {
error.LinkFailure => return, // error reported via link_diags
else => |e| comp.link_diags.addParseError(path, "failed to parse object: {s}", .{@errorName(e)}),
};
},
.load_archive => |path| {
- const prog_node = parent_prog_node.start("Linker Parse Archive", 0);
- defer prog_node.end();
- const sub_node = prog_node.start(path.basename(), 0);
- defer sub_node.end();
-
base.openLoadArchive(path) catch |err| switch (err) {
error.LinkFailure => return, // error reported via link_diags
else => |e| comp.link_diags.addParseError(path, "failed to parse archive: {s}", .{@errorName(e)}),
};
},
.load_dso => |path| {
- const prog_node = parent_prog_node.start("Linker Parse Shared Library", 0);
- defer prog_node.end();
- const sub_node = prog_node.start(path.basename(), 0);
- defer sub_node.end();
-
base.openLoadDso(path, .{
.preferred_mode = .dynamic,
.search_strategy = .paths_first,
@@ -1433,10 +1415,6 @@ pub const File = struct {
};
},
.load_input => |input| {
- const prog_node = parent_prog_node.start("Linker Parse Input", 0);
- defer prog_node.end();
- const sub_node = prog_node.start(input.taskName(), 0);
- defer sub_node.end();
base.loadInput(input) catch |err| switch (err) {
error.LinkFailure => return, // error reported via link_diags
else => |e| {