| ... | @@ -1290,7 +1290,10 @@ pub const ZcuTask = union(enum) { | ... | @@ -1290,7 +1290,10 @@ pub const ZcuTask = union(enum) { |
| 1290 | | 1290 | |
| 1291 | pub fn doPrelinkTask(comp: *Compilation, task: PrelinkTask) void { | 1291 | pub fn doPrelinkTask(comp: *Compilation, task: PrelinkTask) void { |
| 1292 | const diags = &comp.link_diags; | 1292 | const diags = &comp.link_diags; |
| 1293 | const base = comp.bin_file orelse return; | 1293 | const base = comp.bin_file orelse { |
| | 1294 | comp.link_prog_node.completeOne(); |
| | 1295 | return; |
| | 1296 | }; |
| 1294 | switch (task) { | 1297 | switch (task) { |
| 1295 | .load_explicitly_provided => { | 1298 | .load_explicitly_provided => { |
| 1296 | const prog_node = comp.link_prog_node.start("Parse Inputs", comp.link_inputs.len); | 1299 | const prog_node = comp.link_prog_node.start("Parse Inputs", comp.link_inputs.len); |
| ... | @@ -1413,12 +1416,13 @@ pub fn doPrelinkTask(comp: *Compilation, task: PrelinkTask) void { | ... | @@ -1413,12 +1416,13 @@ pub fn doPrelinkTask(comp: *Compilation, task: PrelinkTask) void { |
| 1413 | } | 1416 | } |
| 1414 | pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void { | 1417 | pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void { |
| 1415 | const diags = &comp.link_diags; | 1418 | const diags = &comp.link_diags; |
| | 1419 | const zcu = comp.zcu.?; |
| | 1420 | const ip = &zcu.intern_pool; |
| | 1421 | const pt: Zcu.PerThread = .activate(zcu, @enumFromInt(tid)); |
| | 1422 | defer pt.deactivate(); |
| 1416 | switch (task) { | 1423 | switch (task) { |
| 1417 | .link_nav => |nav_index| { | 1424 | .link_nav => |nav_index| { |
| 1418 | const zcu = comp.zcu.?; | 1425 | const fqn_slice = ip.getNav(nav_index).fqn.toSlice(ip); |
| 1419 | const pt: Zcu.PerThread = .activate(zcu, @enumFromInt(tid)); | | |
| 1420 | defer pt.deactivate(); | | |
| 1421 | const fqn_slice = zcu.intern_pool.getNav(nav_index).fqn.toSlice(&zcu.intern_pool); | | |
| 1422 | const nav_prog_node = comp.link_prog_node.start(fqn_slice, 0); | 1426 | const nav_prog_node = comp.link_prog_node.start(fqn_slice, 0); |
| 1423 | defer nav_prog_node.end(); | 1427 | defer nav_prog_node.end(); |
| 1424 | if (zcu.llvm_object) |llvm_object| { | 1428 | if (zcu.llvm_object) |llvm_object| { |
| ... | @@ -1440,11 +1444,8 @@ pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void { | ... | @@ -1440,11 +1444,8 @@ pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void { |
| 1440 | } | 1444 | } |
| 1441 | }, | 1445 | }, |
| 1442 | .link_func => |func| { | 1446 | .link_func => |func| { |
| 1443 | const zcu = comp.zcu.?; | | |
| 1444 | const nav = zcu.funcInfo(func.func).owner_nav; | 1447 | const nav = zcu.funcInfo(func.func).owner_nav; |
| 1445 | const pt: Zcu.PerThread = .activate(zcu, @enumFromInt(tid)); | 1448 | const fqn_slice = ip.getNav(nav).fqn.toSlice(ip); |
| 1446 | defer pt.deactivate(); | | |
| 1447 | const fqn_slice = zcu.intern_pool.getNav(nav).fqn.toSlice(&zcu.intern_pool); | | |
| 1448 | const nav_prog_node = comp.link_prog_node.start(fqn_slice, 0); | 1449 | const nav_prog_node = comp.link_prog_node.start(fqn_slice, 0); |
| 1449 | defer nav_prog_node.end(); | 1450 | defer nav_prog_node.end(); |
| 1450 | switch (func.mir.status.load(.monotonic)) { | 1451 | switch (func.mir.status.load(.monotonic)) { |
| ... | @@ -1468,9 +1469,9 @@ pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void { | ... | @@ -1468,9 +1469,9 @@ pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void { |
| 1468 | } | 1469 | } |
| 1469 | }, | 1470 | }, |
| 1470 | .link_type => |ty| { | 1471 | .link_type => |ty| { |
| 1471 | const zcu = comp.zcu.?; | 1472 | const name = Type.fromInterned(ty).containerTypeName(ip).toSlice(ip); |
| 1472 | const pt: Zcu.PerThread = .activate(zcu, @enumFromInt(tid)); | 1473 | const nav_prog_node = comp.link_prog_node.start(name, 0); |
| 1473 | defer pt.deactivate(); | 1474 | defer nav_prog_node.end(); |
| 1474 | if (zcu.llvm_object == null) { | 1475 | if (zcu.llvm_object == null) { |
| 1475 | if (comp.bin_file) |lf| { | 1476 | if (comp.bin_file) |lf| { |
| 1476 | lf.updateContainerType(pt, ty) catch |err| switch (err) { | 1477 | lf.updateContainerType(pt, ty) catch |err| switch (err) { |
| ... | @@ -1481,8 +1482,8 @@ pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void { | ... | @@ -1481,8 +1482,8 @@ pub fn doZcuTask(comp: *Compilation, tid: usize, task: ZcuTask) void { |
| 1481 | } | 1482 | } |
| 1482 | }, | 1483 | }, |
| 1483 | .update_line_number => |ti| { | 1484 | .update_line_number => |ti| { |
| 1484 | const pt: Zcu.PerThread = .activate(comp.zcu.?, @enumFromInt(tid)); | 1485 | const nav_prog_node = comp.link_prog_node.start("Update line number", 0); |
| 1485 | defer pt.deactivate(); | 1486 | defer nav_prog_node.end(); |
| 1486 | if (pt.zcu.llvm_object == null) { | 1487 | if (pt.zcu.llvm_object == null) { |
| 1487 | if (comp.bin_file) |lf| { | 1488 | if (comp.bin_file) |lf| { |
| 1488 | lf.updateLineNumber(pt, ti) catch |err| switch (err) { | 1489 | lf.updateLineNumber(pt, ti) catch |err| switch (err) { |