aboutsummaryrefslogtreecommitdiff
path: root/src/link
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2023-05-26 16:04:53 -0400
committerAndrew Kelley <andrew@ziglang.org>2023-06-10 20:47:55 -0700
commit9cd0ca9f482ef7f76d3f3ca683913e9aceaa47fe (patch)
tree86e9cfb93f1cf8b68aebc83877bef7c24aed47a6 /src/link
parentd5f0ee0d62e48e623625779a0cf722c3f0f66921 (diff)
downloadzig-9cd0ca9f482ef7f76d3f3ca683913e9aceaa47fe.tar.gz
zig-9cd0ca9f482ef7f76d3f3ca683913e9aceaa47fe.zip
Module: rename functions to make ownership checks explicit
This makes the difference between `decl.getOwnedFunction` and `decl.val.getFunction` more clear when reading the code.
Diffstat (limited to 'src/link')
-rw-r--r--src/link/Coff.zig10
-rw-r--r--src/link/Dwarf.zig4
-rw-r--r--src/link/Elf.zig8
-rw-r--r--src/link/MachO.zig14
-rw-r--r--src/link/Plan9.zig8
-rw-r--r--src/link/SpirV.zig2
-rw-r--r--src/link/Wasm.zig10
7 files changed, 28 insertions, 28 deletions
diff --git a/src/link/Coff.zig b/src/link/Coff.zig
index f4ee2fde97..8b76e8dd69 100644
--- a/src/link/Coff.zig
+++ b/src/link/Coff.zig
@@ -1156,10 +1156,10 @@ pub fn updateDecl(
const decl = mod.declPtr(decl_index);
- if (decl.getExternFunc(mod)) |_| {
+ if (decl.val.getExternFunc(mod)) |_| {
return; // TODO Should we do more when front-end analyzed extern decl?
}
- if (decl.getVariable(mod)) |variable| {
+ if (decl.val.getVariable(mod)) |variable| {
if (variable.is_extern) {
return; // TODO Should we do more when front-end analyzed extern decl?
}
@@ -1172,7 +1172,7 @@ pub fn updateDecl(
var code_buffer = std.ArrayList(u8).init(self.base.allocator);
defer code_buffer.deinit();
- const decl_val = if (decl.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
+ const decl_val = if (decl.val.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
const res = try codegen.generateSymbol(&self.base, decl.srcLoc(mod), .{
.ty = decl.ty,
.val = decl_val,
@@ -1313,7 +1313,7 @@ fn getDeclOutputSection(self: *Coff, decl_index: Module.Decl.Index) u16 {
// TODO: what if this is a function pointer?
.Fn => break :blk self.text_section_index.?,
else => {
- if (decl.getVariable(mod)) |_| {
+ if (val.getVariable(mod)) |_| {
break :blk self.data_section_index.?;
}
break :blk self.rdata_section_index.?;
@@ -1425,7 +1425,7 @@ pub fn updateDeclExports(
// detect the default subsystem.
for (exports) |exp| {
const exported_decl = mod.declPtr(exp.exported_decl);
- if (exported_decl.getFunctionIndex(mod) == .none) continue;
+ if (exported_decl.getOwnedFunctionIndex(mod) == .none) continue;
const winapi_cc = switch (self.base.options.target.cpu.arch) {
.x86 => std.builtin.CallingConvention.Stdcall,
else => std.builtin.CallingConvention.C,
diff --git a/src/link/Dwarf.zig b/src/link/Dwarf.zig
index d6dd6979ea..9d8076f592 100644
--- a/src/link/Dwarf.zig
+++ b/src/link/Dwarf.zig
@@ -971,7 +971,7 @@ pub fn initDeclState(self: *Dwarf, mod: *Module, decl_index: Module.Decl.Index)
// For functions we need to add a prologue to the debug line program.
try dbg_line_buffer.ensureTotalCapacity(26);
- const func = decl.getFunction(mod).?;
+ const func = decl.val.getFunction(mod).?;
log.debug("decl.src_line={d}, func.lbrace_line={d}, func.rbrace_line={d}", .{
decl.src_line,
func.lbrace_line,
@@ -1523,7 +1523,7 @@ pub fn updateDeclLineNumber(self: *Dwarf, mod: *Module, decl_index: Module.Decl.
if (atom.len == 0) return;
const decl = mod.declPtr(decl_index);
- const func = decl.getFunction(mod).?;
+ const func = decl.val.getFunction(mod).?;
log.debug("decl.src_line={d}, func.lbrace_line={d}, func.rbrace_line={d}", .{
decl.src_line,
func.lbrace_line,
diff --git a/src/link/Elf.zig b/src/link/Elf.zig
index 476b939038..e4fa07620d 100644
--- a/src/link/Elf.zig
+++ b/src/link/Elf.zig
@@ -2465,7 +2465,7 @@ fn getDeclShdrIndex(self: *Elf, decl_index: Module.Decl.Index) u16 {
// TODO: what if this is a function pointer?
.Fn => break :blk self.text_section_index.?,
else => {
- if (decl.getVariable(mod)) |_| {
+ if (val.getVariable(mod)) |_| {
break :blk self.data_section_index.?;
}
break :blk self.rodata_section_index.?;
@@ -2647,10 +2647,10 @@ pub fn updateDecl(
const decl = mod.declPtr(decl_index);
- if (decl.getExternFunc(mod)) |_| {
+ if (decl.val.getExternFunc(mod)) |_| {
return; // TODO Should we do more when front-end analyzed extern decl?
}
- if (decl.getVariable(mod)) |variable| {
+ if (decl.val.getVariable(mod)) |variable| {
if (variable.is_extern) {
return; // TODO Should we do more when front-end analyzed extern decl?
}
@@ -2667,7 +2667,7 @@ pub fn updateDecl(
defer if (decl_state) |*ds| ds.deinit();
// TODO implement .debug_info for global variables
- const decl_val = if (decl.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
+ const decl_val = if (decl.val.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
const res = if (decl_state) |*ds|
try codegen.generateSymbol(&self.base, decl.srcLoc(mod), .{
.ty = decl.ty,
diff --git a/src/link/MachO.zig b/src/link/MachO.zig
index ffbdcdb91f..f7f975f920 100644
--- a/src/link/MachO.zig
+++ b/src/link/MachO.zig
@@ -1984,16 +1984,16 @@ pub fn updateDecl(self: *MachO, mod: *Module, decl_index: Module.Decl.Index) !vo
const decl = mod.declPtr(decl_index);
- if (decl.getExternFunc(mod)) |_| {
+ if (decl.val.getExternFunc(mod)) |_| {
return; // TODO Should we do more when front-end analyzed extern decl?
}
- if (decl.getVariable(mod)) |variable| {
+ if (decl.val.getVariable(mod)) |variable| {
if (variable.is_extern) {
return; // TODO Should we do more when front-end analyzed extern decl?
}
}
- const is_threadlocal = if (decl.getVariable(mod)) |variable|
+ const is_threadlocal = if (decl.val.getVariable(mod)) |variable|
variable.is_threadlocal and !self.base.options.single_threaded
else
false;
@@ -2012,7 +2012,7 @@ pub fn updateDecl(self: *MachO, mod: *Module, decl_index: Module.Decl.Index) !vo
null;
defer if (decl_state) |*ds| ds.deinit();
- const decl_val = if (decl.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
+ const decl_val = if (decl.val.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
const res = if (decl_state) |*ds|
try codegen.generateSymbol(&self.base, decl.srcLoc(mod), .{
.ty = decl.ty,
@@ -2177,7 +2177,7 @@ fn updateThreadlocalVariable(self: *MachO, module: *Module, decl_index: Module.D
const decl = module.declPtr(decl_index);
const decl_metadata = self.decls.get(decl_index).?;
- const decl_val = decl.getVariable(mod).?.init.toValue();
+ const decl_val = decl.val.getVariable(mod).?.init.toValue();
const res = if (decl_state) |*ds|
try codegen.generateSymbol(&self.base, decl.srcLoc(mod), .{
.ty = decl.ty,
@@ -2278,7 +2278,7 @@ fn getDeclOutputSection(self: *MachO, decl_index: Module.Decl.Index) u8 {
}
}
- if (decl.getVariable(mod)) |variable| {
+ if (val.getVariable(mod)) |variable| {
if (variable.is_threadlocal and !single_threaded) {
break :blk self.thread_data_section_index.?;
}
@@ -2289,7 +2289,7 @@ fn getDeclOutputSection(self: *MachO, decl_index: Module.Decl.Index) u8 {
// TODO: what if this is a function pointer?
.Fn => break :blk self.text_section_index.?,
else => {
- if (decl.getVariable(mod)) |_| {
+ if (val.getVariable(mod)) |_| {
break :blk self.data_section_index.?;
}
break :blk self.data_const_section_index.?;
diff --git a/src/link/Plan9.zig b/src/link/Plan9.zig
index 2071833b93..0803b6beef 100644
--- a/src/link/Plan9.zig
+++ b/src/link/Plan9.zig
@@ -392,10 +392,10 @@ pub fn lowerUnnamedConst(self: *Plan9, tv: TypedValue, decl_index: Module.Decl.I
pub fn updateDecl(self: *Plan9, mod: *Module, decl_index: Module.Decl.Index) !void {
const decl = mod.declPtr(decl_index);
- if (decl.getExternFunc(mod)) |_| {
+ if (decl.val.getExternFunc(mod)) |_| {
return; // TODO Should we do more when front-end analyzed extern decl?
}
- if (decl.getVariable(mod)) |variable| {
+ if (decl.val.getVariable(mod)) |variable| {
if (variable.is_extern) {
return; // TODO Should we do more when front-end analyzed extern decl?
}
@@ -407,7 +407,7 @@ pub fn updateDecl(self: *Plan9, mod: *Module, decl_index: Module.Decl.Index) !vo
var code_buffer = std.ArrayList(u8).init(self.base.allocator);
defer code_buffer.deinit();
- const decl_val = if (decl.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
+ const decl_val = if (decl.val.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
// TODO we need the symbol index for symbol in the table of locals for the containing atom
const res = try codegen.generateSymbol(&self.base, decl.srcLoc(mod), .{
.ty = decl.ty,
@@ -771,7 +771,7 @@ pub fn freeDecl(self: *Plan9, decl_index: Module.Decl.Index) void {
// in the deleteUnusedDecl function.
const mod = self.base.options.module.?;
const decl = mod.declPtr(decl_index);
- const is_fn = decl.getFunctionIndex(mod) != .none;
+ const is_fn = decl.val.getFunctionIndex(mod) != .none;
if (is_fn) {
var symidx_and_submap = self.fn_decl_table.get(decl.getFileScope(mod)).?;
var submap = symidx_and_submap.functions;
diff --git a/src/link/SpirV.zig b/src/link/SpirV.zig
index 0a6608303e..89d6be1ec8 100644
--- a/src/link/SpirV.zig
+++ b/src/link/SpirV.zig
@@ -138,7 +138,7 @@ pub fn updateDeclExports(
exports: []const *Module.Export,
) !void {
const decl = mod.declPtr(decl_index);
- if (decl.getFunctionIndex(mod) != .none and decl.ty.fnCallingConvention(mod) == .Kernel) {
+ if (decl.val.getFunctionIndex(mod) != .none and decl.ty.fnCallingConvention(mod) == .Kernel) {
// TODO: Unify with resolveDecl in spirv.zig.
const entry = try self.decl_link.getOrPut(decl_index);
if (!entry.found_existing) {
diff --git a/src/link/Wasm.zig b/src/link/Wasm.zig
index 78d1be978b..96de121ffb 100644
--- a/src/link/Wasm.zig
+++ b/src/link/Wasm.zig
@@ -1404,9 +1404,9 @@ pub fn updateDecl(wasm: *Wasm, mod: *Module, decl_index: Module.Decl.Index) !voi
defer tracy.end();
const decl = mod.declPtr(decl_index);
- if (decl.getFunction(mod)) |_| {
+ if (decl.val.getFunction(mod)) |_| {
return;
- } else if (decl.getExternFunc(mod)) |_| {
+ } else if (decl.val.getExternFunc(mod)) |_| {
return;
}
@@ -1415,12 +1415,12 @@ pub fn updateDecl(wasm: *Wasm, mod: *Module, decl_index: Module.Decl.Index) !voi
atom.clear();
if (decl.isExtern(mod)) {
- const variable = decl.getVariable(mod).?;
+ const variable = decl.getOwnedVariable(mod).?;
const name = mem.sliceTo(decl.name, 0);
const lib_name = mod.intern_pool.stringToSliceUnwrap(variable.lib_name);
return wasm.addOrUpdateImport(name, atom.sym_index, lib_name, null);
}
- const val = if (decl.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
+ const val = if (decl.val.getVariable(mod)) |variable| variable.init.toValue() else decl.val;
var code_writer = std.ArrayList(u8).init(wasm.base.allocator);
defer code_writer.deinit();
@@ -3373,7 +3373,7 @@ pub fn flushModule(wasm: *Wasm, comp: *Compilation, prog_node: *std.Progress.Nod
const atom = wasm.getAtomPtr(atom_index);
if (decl.ty.zigTypeTag(mod) == .Fn) {
try wasm.parseAtom(atom_index, .function);
- } else if (decl.getVariable(mod)) |variable| {
+ } else if (decl.getOwnedVariable(mod)) |variable| {
if (variable.is_const) {
try wasm.parseAtom(atom_index, .{ .data = .read_only });
} else if (variable.init.toValue().isUndefDeep(mod)) {