aboutsummaryrefslogtreecommitdiff
path: root/src/codegen.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-05-05 19:13:43 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-06-10 20:42:29 -0700
commit31aee50c1a96b7e72b42ee885636b27fbcac8eb4 (patch)
treeddd17a80a48fa620a6d4cea9d8f6a970eb90845d /src/codegen.zig
parent08e97639513f09e2797bd7afcdfdfecdad6c6fd8 (diff)
downloadzig-31aee50c1a96b7e72b42ee885636b27fbcac8eb4.tar.gz
zig-31aee50c1a96b7e72b42ee885636b27fbcac8eb4.zip
InternPool: add a slice encoding
This uses the data field to reference its pointer field type, which allows for efficient and infallible access of a slice type's pointer type.
Diffstat (limited to 'src/codegen.zig')
-rw-r--r--src/codegen.zig6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/codegen.zig b/src/codegen.zig
index 25e8d892d8..5f5a3f66be 100644
--- a/src/codegen.zig
+++ b/src/codegen.zig
@@ -361,7 +361,7 @@ pub fn generateSymbol(
// generate ptr
var buf: Type.SlicePtrFieldTypeBuffer = undefined;
- const slice_ptr_field_type = typed_value.ty.slicePtrFieldType(&buf);
+ const slice_ptr_field_type = typed_value.ty.slicePtrFieldType(&buf, mod);
switch (try generateSymbol(bin_file, src_loc, .{
.ty = slice_ptr_field_type,
.val = slice.ptr,
@@ -851,7 +851,7 @@ fn lowerParentPtr(
var buf: Type.SlicePtrFieldTypeBuffer = undefined;
break :offset switch (field_ptr.field_index) {
0 => 0,
- 1 => field_ptr.container_ty.slicePtrFieldType(&buf).abiSize(mod),
+ 1 => field_ptr.container_ty.slicePtrFieldType(&buf, mod).abiSize(mod),
else => unreachable,
};
},
@@ -951,7 +951,7 @@ fn lowerDeclRef(
if (typed_value.ty.isSlice(mod)) {
// generate ptr
var buf: Type.SlicePtrFieldTypeBuffer = undefined;
- const slice_ptr_field_type = typed_value.ty.slicePtrFieldType(&buf);
+ const slice_ptr_field_type = typed_value.ty.slicePtrFieldType(&buf, mod);
switch (try generateSymbol(bin_file, src_loc, .{
.ty = slice_ptr_field_type,
.val = typed_value.val,