aboutsummaryrefslogtreecommitdiff
path: root/src-self-hosted
diff options
context:
space:
mode:
Diffstat (limited to 'src-self-hosted')
-rw-r--r--src-self-hosted/codegen.zig4
-rw-r--r--src-self-hosted/compilation.zig16
-rw-r--r--src-self-hosted/dep_tokenizer.zig82
-rw-r--r--src-self-hosted/link.zig8
-rw-r--r--src-self-hosted/package.zig10
-rw-r--r--src-self-hosted/stage2.zig34
-rw-r--r--src-self-hosted/translate_c.zig2
-rw-r--r--src-self-hosted/util.zig14
-rw-r--r--src-self-hosted/value.zig14
9 files changed, 92 insertions, 92 deletions
diff --git a/src-self-hosted/codegen.zig b/src-self-hosted/codegen.zig
index e10d66d1f6..585ba6c51a 100644
--- a/src-self-hosted/codegen.zig
+++ b/src-self-hosted/codegen.zig
@@ -45,7 +45,7 @@ pub async fn renderToLlvm(comp: *Compilation, fn_val: *Value.Fn, code: *ir.Code)
// Don't use ZIG_VERSION_STRING here. LLVM misparses it when it includes
// the git revision.
- const producer = try std.Buffer.allocPrint(&code.arena.allocator, "zig {}.{}.{}", .{
+ const producer = try std.fmt.allocPrintZ(&code.arena.allocator, "zig {}.{}.{}", .{
@as(u32, c.ZIG_VERSION_MAJOR),
@as(u32, c.ZIG_VERSION_MINOR),
@as(u32, c.ZIG_VERSION_PATCH),
@@ -62,7 +62,7 @@ pub async fn renderToLlvm(comp: *Compilation, fn_val: *Value.Fn, code: *ir.Code)
dibuilder,
DW.LANG_C99,
compile_unit_file,
- producer.span(),
+ producer,
is_optimized,
flags,
runtime_version,
diff --git a/src-self-hosted/compilation.zig b/src-self-hosted/compilation.zig
index 5e2b9ad899..8f9fe9ebc2 100644
--- a/src-self-hosted/compilation.zig
+++ b/src-self-hosted/compilation.zig
@@ -2,7 +2,7 @@ const std = @import("std");
const io = std.io;
const mem = std.mem;
const Allocator = mem.Allocator;
-const Buffer = std.Buffer;
+const ArrayListSentineled = std.ArrayListSentineled;
const llvm = @import("llvm.zig");
const c = @import("c.zig");
const builtin = std.builtin;
@@ -123,8 +123,8 @@ pub const LlvmHandle = struct {
pub const Compilation = struct {
zig_compiler: *ZigCompiler,
- name: Buffer,
- llvm_triple: Buffer,
+ name: ArrayListSentineled(u8, 0),
+ llvm_triple: ArrayListSentineled(u8, 0),
root_src_path: ?[]const u8,
target: std.Target,
llvm_target: *llvm.Target,
@@ -444,7 +444,7 @@ pub const Compilation = struct {
comp.arena_allocator.deinit();
}
- comp.name = try Buffer.init(comp.arena(), name);
+ comp.name = try ArrayListSentineled(u8, 0).init(comp.arena(), name);
comp.llvm_triple = try util.getLLVMTriple(comp.arena(), target);
comp.llvm_target = try util.llvmTargetFromTriple(comp.llvm_triple);
comp.zig_std_dir = try fs.path.join(comp.arena(), &[_][]const u8{ zig_lib_dir, "std" });
@@ -1151,7 +1151,7 @@ pub const Compilation = struct {
/// If the temporary directory for this compilation has not been created, it creates it.
/// Then it creates a random file name in that dir and returns it.
- pub fn createRandomOutputPath(self: *Compilation, suffix: []const u8) !Buffer {
+ pub fn createRandomOutputPath(self: *Compilation, suffix: []const u8) !ArrayListSentineled(u8, 0) {
const tmp_dir = try self.getTmpDir();
const file_prefix = self.getRandomFileName();
@@ -1161,7 +1161,7 @@ pub const Compilation = struct {
const full_path = try fs.path.join(self.gpa(), &[_][]const u8{ tmp_dir, file_name[0..] });
errdefer self.gpa().free(full_path);
- return Buffer.fromOwnedSlice(self.gpa(), full_path);
+ return ArrayListSentineled(u8, 0).fromOwnedSlice(self.gpa(), full_path);
}
/// If the temporary directory for this Compilation has not been created, creates it.
@@ -1279,7 +1279,7 @@ fn generateDeclFn(comp: *Compilation, fn_decl: *Decl.Fn) !void {
const fn_type = try analyzeFnType(comp, tree_scope, fn_decl.base.parent_scope, fn_decl.fn_proto);
defer fn_type.base.base.deref(comp);
- var symbol_name = try std.Buffer.init(comp.gpa(), fn_decl.base.name);
+ var symbol_name = try std.ArrayListSentineled(u8, 0).init(comp.gpa(), fn_decl.base.name);
var symbol_name_consumed = false;
errdefer if (!symbol_name_consumed) symbol_name.deinit();
@@ -1426,7 +1426,7 @@ fn generateDeclFnProto(comp: *Compilation, fn_decl: *Decl.Fn) !void {
);
defer fn_type.base.base.deref(comp);
- var symbol_name = try std.Buffer.init(comp.gpa(), fn_decl.base.name);
+ var symbol_name = try std.ArrayListSentineled(u8, 0).init(comp.gpa(), fn_decl.base.name);
var symbol_name_consumed = false;
defer if (!symbol_name_consumed) symbol_name.deinit();
diff --git a/src-self-hosted/dep_tokenizer.zig b/src-self-hosted/dep_tokenizer.zig
index 6eba0c759c..cad12834a7 100644
--- a/src-self-hosted/dep_tokenizer.zig
+++ b/src-self-hosted/dep_tokenizer.zig
@@ -33,7 +33,7 @@ pub const Tokenizer = struct {
break; // advance
},
else => {
- self.state = State{ .target = try std.Buffer.initSize(&self.arena.allocator, 0) };
+ self.state = State{ .target = try std.ArrayListSentineled(u8, 0).initSize(&self.arena.allocator, 0) };
},
},
.target => |*target| switch (char) {
@@ -53,7 +53,7 @@ pub const Tokenizer = struct {
break; // advance
},
else => {
- try target.appendByte(char);
+ try target.append(char);
break; // advance
},
},
@@ -62,24 +62,24 @@ pub const Tokenizer = struct {
return self.errorIllegalChar(self.index, char, "bad target escape", .{});
},
' ', '#', '\\' => {
- try target.appendByte(char);
+ try target.append(char);
self.state = State{ .target = target.* };
break; // advance
},
'$' => {
- try target.append(self.bytes[self.index - 1 .. self.index]);
+ try target.appendSlice(self.bytes[self.index - 1 .. self.index]);
self.state = State{ .target_dollar_sign = target.* };
break; // advance
},
else => {
- try target.append(self.bytes[self.index - 1 .. self.index + 1]);
+ try target.appendSlice(self.bytes[self.index - 1 .. self.index + 1]);
self.state = State{ .target = target.* };
break; // advance
},
},
.target_dollar_sign => |*target| switch (char) {
'$' => {
- try target.appendByte(char);
+ try target.append(char);
self.state = State{ .target = target.* };
break; // advance
},
@@ -125,7 +125,7 @@ pub const Tokenizer = struct {
continue;
},
else => {
- try target.append(self.bytes[self.index - 2 .. self.index + 1]);
+ try target.appendSlice(self.bytes[self.index - 2 .. self.index + 1]);
self.state = State{ .target = target.* };
break;
},
@@ -144,11 +144,11 @@ pub const Tokenizer = struct {
break; // advance
},
'"' => {
- self.state = State{ .prereq_quote = try std.Buffer.initSize(&self.arena.allocator, 0) };
+ self.state = State{ .prereq_quote = try std.ArrayListSentineled(u8, 0).initSize(&self.arena.allocator, 0) };
break; // advance
},
else => {
- self.state = State{ .prereq = try std.Buffer.initSize(&self.arena.allocator, 0) };
+ self.state = State{ .prereq = try std.ArrayListSentineled(u8, 0).initSize(&self.arena.allocator, 0) };
},
},
.rhs_continuation => switch (char) {
@@ -181,7 +181,7 @@ pub const Tokenizer = struct {
return Token{ .id = .prereq, .bytes = bytes };
},
else => {
- try prereq.appendByte(char);
+ try prereq.append(char);
break; // advance
},
},
@@ -201,7 +201,7 @@ pub const Tokenizer = struct {
break; // advance
},
else => {
- try prereq.appendByte(char);
+ try prereq.append(char);
break; // advance
},
},
@@ -218,7 +218,7 @@ pub const Tokenizer = struct {
},
else => {
// not continuation
- try prereq.append(self.bytes[self.index - 1 .. self.index + 1]);
+ try prereq.appendSlice(self.bytes[self.index - 1 .. self.index + 1]);
self.state = State{ .prereq = prereq.* };
break; // advance
},
@@ -300,25 +300,25 @@ pub const Tokenizer = struct {
}
fn errorf(self: *Tokenizer, comptime fmt: []const u8, args: var) Error {
- self.error_text = (try std.Buffer.allocPrint(&self.arena.allocator, fmt, args)).span();
+ self.error_text = try std.fmt.allocPrintZ(&self.arena.allocator, fmt, args);
return Error.InvalidInput;
}
fn errorPosition(self: *Tokenizer, position: usize, bytes: []const u8, comptime fmt: []const u8, args: var) Error {
- var buffer = try std.Buffer.initSize(&self.arena.allocator, 0);
+ var buffer = try std.ArrayListSentineled(u8, 0).initSize(&self.arena.allocator, 0);
try buffer.outStream().print(fmt, args);
- try buffer.append(" '");
- var out = makeOutput(std.Buffer.append, &buffer);
+ try buffer.appendSlice(" '");
+ var out = makeOutput(std.ArrayListSentineled(u8, 0).appendSlice, &buffer);
try printCharValues(&out, bytes);
- try buffer.append("'");
+ try buffer.appendSlice("'");
try buffer.outStream().print(" at position {}", .{position - (bytes.len - 1)});
self.error_text = buffer.span();
return Error.InvalidInput;
}
fn errorIllegalChar(self: *Tokenizer, position: usize, char: u8, comptime fmt: []const u8, args: var) Error {
- var buffer = try std.Buffer.initSize(&self.arena.allocator, 0);
- try buffer.append("illegal char ");
+ var buffer = try std.ArrayListSentineled(u8, 0).initSize(&self.arena.allocator, 0);
+ try buffer.appendSlice("illegal char ");
try printUnderstandableChar(&buffer, char);
try buffer.outStream().print(" at position {}", .{position});
if (fmt.len != 0) try buffer.outStream().print(": " ++ fmt, args);
@@ -333,18 +333,18 @@ pub const Tokenizer = struct {
const State = union(enum) {
lhs: void,
- target: std.Buffer,
- target_reverse_solidus: std.Buffer,
- target_dollar_sign: std.Buffer,
- target_colon: std.Buffer,
- target_colon_reverse_solidus: std.Buffer,
+ target: std.ArrayListSentineled(u8, 0),
+ target_reverse_solidus: std.ArrayListSentineled(u8, 0),
+ target_dollar_sign: std.ArrayListSentineled(u8, 0),
+ target_colon: std.ArrayListSentineled(u8, 0),
+ target_colon_reverse_solidus: std.ArrayListSentineled(u8, 0),
rhs: void,
rhs_continuation: void,
rhs_continuation_linefeed: void,
- prereq_quote: std.Buffer,
- prereq: std.Buffer,
- prereq_continuation: std.Buffer,
- prereq_continuation_linefeed: std.Buffer,
+ prereq_quote: std.ArrayListSentineled(u8, 0),
+ prereq: std.ArrayListSentineled(u8, 0),
+ prereq_continuation: std.ArrayListSentineled(u8, 0),
+ prereq_continuation_linefeed: std.ArrayListSentineled(u8, 0),
};
const Token = struct {
@@ -841,28 +841,28 @@ fn depTokenizer(input: []const u8, expect: []const u8) !void {
defer arena_allocator.deinit();
var it = Tokenizer.init(arena, input);
- var buffer = try std.Buffer.initSize(arena, 0);
+ var buffer = try std.ArrayListSentineled(u8, 0).initSize(arena, 0);
var i: usize = 0;
while (true) {
const r = it.next() catch |err| {
switch (err) {
Tokenizer.Error.InvalidInput => {
- if (i != 0) try buffer.append("\n");
- try buffer.append("ERROR: ");
- try buffer.append(it.error_text);
+ if (i != 0) try buffer.appendSlice("\n");
+ try buffer.appendSlice("ERROR: ");
+ try buffer.appendSlice(it.error_text);
},
else => return err,
}
break;
};
const token = r orelse break;
- if (i != 0) try buffer.append("\n");
- try buffer.append(@tagName(token.id));
- try buffer.append(" = {");
+ if (i != 0) try buffer.appendSlice("\n");
+ try buffer.appendSlice(@tagName(token.id));
+ try buffer.appendSlice(" = {");
for (token.bytes) |b| {
- try buffer.appendByte(printable_char_tab[b]);
+ try buffer.append(printable_char_tab[b]);
}
- try buffer.append("}");
+ try buffer.appendSlice("}");
i += 1;
}
const got: []const u8 = buffer.span();
@@ -995,13 +995,13 @@ fn printCharValues(out: var, bytes: []const u8) !void {
}
}
-fn printUnderstandableChar(buffer: *std.Buffer, char: u8) !void {
+fn printUnderstandableChar(buffer: *std.ArrayListSentineled(u8, 0), char: u8) !void {
if (!std.ascii.isPrint(char) or char == ' ') {
try buffer.outStream().print("\\x{X:2}", .{char});
} else {
- try buffer.append("'");
- try buffer.appendByte(printable_char_tab[char]);
- try buffer.append("'");
+ try buffer.appendSlice("'");
+ try buffer.append(printable_char_tab[char]);
+ try buffer.appendSlice("'");
}
}
diff --git a/src-self-hosted/link.zig b/src-self-hosted/link.zig
index ee2ef53d22..013a6248cc 100644
--- a/src-self-hosted/link.zig
+++ b/src-self-hosted/link.zig
@@ -15,10 +15,10 @@ const Context = struct {
link_in_crt: bool,
link_err: error{OutOfMemory}!void,
- link_msg: std.Buffer,
+ link_msg: std.ArrayListSentineled(u8, 0),
libc: *LibCInstallation,
- out_file_path: std.Buffer,
+ out_file_path: std.ArrayListSentineled(u8, 0),
};
pub fn link(comp: *Compilation) !void {
@@ -34,9 +34,9 @@ pub fn link(comp: *Compilation) !void {
};
defer ctx.arena.deinit();
ctx.args = std.ArrayList([*:0]const u8).init(&ctx.arena.allocator);
- ctx.link_msg = std.Buffer.initNull(&ctx.arena.allocator);
+ ctx.link_msg = std.ArrayListSentineled(u8, 0).initNull(&ctx.arena.allocator);
- ctx.out_file_path = try std.Buffer.init(&ctx.arena.allocator, comp.name.span());
+ ctx.out_file_path = try std.ArrayListSentineled(u8, 0).init(&ctx.arena.allocator, comp.name.span());
switch (comp.kind) {
.Exe => {
try ctx.out_file_path.append(comp.target.exeFileExt());
diff --git a/src-self-hosted/package.zig b/src-self-hosted/package.zig
index c8d46c7719..3111555878 100644
--- a/src-self-hosted/package.zig
+++ b/src-self-hosted/package.zig
@@ -1,11 +1,11 @@
const std = @import("std");
const mem = std.mem;
const assert = std.debug.assert;
-const Buffer = std.Buffer;
+const ArrayListSentineled = std.ArrayListSentineled;
pub const Package = struct {
- root_src_dir: Buffer,
- root_src_path: Buffer,
+ root_src_dir: ArrayListSentineled(u8, 0),
+ root_src_path: ArrayListSentineled(u8, 0),
/// relative to root_src_dir
table: Table,
@@ -17,8 +17,8 @@ pub const Package = struct {
pub fn create(allocator: *mem.Allocator, root_src_dir: []const u8, root_src_path: []const u8) !*Package {
const ptr = try allocator.create(Package);
ptr.* = Package{
- .root_src_dir = try Buffer.init(allocator, root_src_dir),
- .root_src_path = try Buffer.init(allocator, root_src_path),
+ .root_src_dir = try ArrayListSentineled(u8, 0).init(allocator, root_src_dir),
+ .root_src_path = try ArrayListSentineled(u8, 0).init(allocator, root_src_path),
.table = Table.init(allocator),
};
return ptr;
diff --git a/src-self-hosted/stage2.zig b/src-self-hosted/stage2.zig
index 02213464e6..8dd2ee876d 100644
--- a/src-self-hosted/stage2.zig
+++ b/src-self-hosted/stage2.zig
@@ -8,7 +8,7 @@ const fs = std.fs;
const process = std.process;
const Allocator = mem.Allocator;
const ArrayList = std.ArrayList;
-const Buffer = std.Buffer;
+const ArrayListSentineled = std.ArrayListSentineled;
const Target = std.Target;
const CrossTarget = std.zig.CrossTarget;
const self_hosted_main = @import("main.zig");
@@ -449,7 +449,7 @@ export fn stage2_DepTokenizer_deinit(self: *stage2_DepTokenizer) void {
export fn stage2_DepTokenizer_next(self: *stage2_DepTokenizer) stage2_DepNextResult {
const otoken = self.handle.next() catch {
- const textz = std.Buffer.init(&self.handle.arena.allocator, self.handle.error_text) catch @panic("failed to create .d tokenizer error text");
+ const textz = std.ArrayListSentineled(u8, 0).init(&self.handle.arena.allocator, self.handle.error_text) catch @panic("failed to create .d tokenizer error text");
return stage2_DepNextResult{
.type_id = .error_,
.textz = textz.span().ptr,
@@ -461,7 +461,7 @@ export fn stage2_DepTokenizer_next(self: *stage2_DepTokenizer) stage2_DepNextRes
.textz = undefined,
};
};
- const textz = std.Buffer.init(&self.handle.arena.allocator, token.bytes) catch @panic("failed to create .d tokenizer token text");
+ const textz = std.ArrayListSentineled(u8, 0).init(&self.handle.arena.allocator, token.bytes) catch @panic("failed to create .d tokenizer token text");
return stage2_DepNextResult{
.type_id = switch (token.id) {
.target => .target,
@@ -924,14 +924,14 @@ const Stage2Target = extern struct {
var dynamic_linker: ?[*:0]u8 = null;
const target = try crossTargetToTarget(cross_target, &dynamic_linker);
- var cache_hash = try std.Buffer.allocPrint(allocator, "{}\n{}\n", .{
+ var cache_hash = try std.ArrayListSentineled(u8, 0).allocPrint(allocator, "{}\n{}\n", .{
target.cpu.model.name,
target.cpu.features.asBytes(),
});
defer cache_hash.deinit();
const generic_arch_name = target.cpu.arch.genericName();
- var cpu_builtin_str_buffer = try std.Buffer.allocPrint(allocator,
+ var cpu_builtin_str_buffer = try std.ArrayListSentineled(u8, 0).allocPrint(allocator,
\\Cpu{{
\\ .arch = .{},
\\ .model = &Target.{}.cpu.{},
@@ -946,7 +946,7 @@ const Stage2Target = extern struct {
});
defer cpu_builtin_str_buffer.deinit();
- var llvm_features_buffer = try std.Buffer.initSize(allocator, 0);
+ var llvm_features_buffer = try std.ArrayListSentineled(u8, 0).initSize(allocator, 0);
defer llvm_features_buffer.deinit();
// Unfortunately we have to do the work twice, because Clang does not support
@@ -961,17 +961,17 @@ const Stage2Target = extern struct {
if (feature.llvm_name) |llvm_name| {
const plus_or_minus = "-+"[@boolToInt(is_enabled)];
- try llvm_features_buffer.appendByte(plus_or_minus);
- try llvm_features_buffer.append(llvm_name);
- try llvm_features_buffer.append(",");
+ try llvm_features_buffer.append(plus_or_minus);
+ try llvm_features_buffer.appendSlice(llvm_name);
+ try llvm_features_buffer.appendSlice(",");
}
if (is_enabled) {
// TODO some kind of "zig identifier escape" function rather than
// unconditionally using @"" syntax
- try cpu_builtin_str_buffer.append(" .@\"");
- try cpu_builtin_str_buffer.append(feature.name);
- try cpu_builtin_str_buffer.append("\",\n");
+ try cpu_builtin_str_buffer.appendSlice(" .@\"");
+ try cpu_builtin_str_buffer.appendSlice(feature.name);
+ try cpu_builtin_str_buffer.appendSlice("\",\n");
}
}
@@ -990,7 +990,7 @@ const Stage2Target = extern struct {
},
}
- try cpu_builtin_str_buffer.append(
+ try cpu_builtin_str_buffer.appendSlice(
\\ }),
\\};
\\
@@ -999,7 +999,7 @@ const Stage2Target = extern struct {
assert(mem.endsWith(u8, llvm_features_buffer.span(), ","));
llvm_features_buffer.shrink(llvm_features_buffer.len() - 1);
- var os_builtin_str_buffer = try std.Buffer.allocPrint(allocator,
+ var os_builtin_str_buffer = try std.ArrayListSentineled(u8, 0).allocPrint(allocator,
\\Os{{
\\ .tag = .{},
\\ .version_range = .{{
@@ -1042,7 +1042,7 @@ const Stage2Target = extern struct {
.emscripten,
.uefi,
.other,
- => try os_builtin_str_buffer.append(" .none = {} }\n"),
+ => try os_builtin_str_buffer.appendSlice(" .none = {} }\n"),
.freebsd,
.macosx,
@@ -1118,9 +1118,9 @@ const Stage2Target = extern struct {
@tagName(target.os.version_range.windows.max),
}),
}
- try os_builtin_str_buffer.append("};\n");
+ try os_builtin_str_buffer.appendSlice("};\n");
- try cache_hash.append(
+ try cache_hash.appendSlice(
os_builtin_str_buffer.span()[os_builtin_str_ver_start_index..os_builtin_str_buffer.len()],
);
diff --git a/src-self-hosted/translate_c.zig b/src-self-hosted/translate_c.zig
index 854037ec57..6ba7fc8ca1 100644
--- a/src-self-hosted/translate_c.zig
+++ b/src-self-hosted/translate_c.zig
@@ -275,7 +275,7 @@ pub fn translate(
const tree = try tree_arena.allocator.create(ast.Tree);
tree.* = ast.Tree{
- .source = undefined, // need to use Buffer.toOwnedSlice later
+ .source = undefined, // need to use toOwnedSlice later
.root_node = undefined,
.arena_allocator = tree_arena,
.tokens = undefined, // can't reference the allocator yet
diff --git a/src-self-hosted/util.zig b/src-self-hosted/util.zig
index 4699b453ef..6585fd7c6f 100644
--- a/src-self-hosted/util.zig
+++ b/src-self-hosted/util.zig
@@ -16,11 +16,11 @@ pub fn getDarwinArchString(self: Target) [:0]const u8 {
}
}
-pub fn llvmTargetFromTriple(triple: std.Buffer) !*llvm.Target {
+pub fn llvmTargetFromTriple(triple: [:0]const u8) !*llvm.Target {
var result: *llvm.Target = undefined;
var err_msg: [*:0]u8 = undefined;
- if (llvm.GetTargetFromTriple(triple.span(), &result, &err_msg) != 0) {
- std.debug.warn("triple: {s} error: {s}\n", .{ triple.span(), err_msg });
+ if (llvm.GetTargetFromTriple(triple, &result, &err_msg) != 0) {
+ std.debug.warn("triple: {s} error: {s}\n", .{ triple, err_msg });
return error.UnsupportedTarget;
}
return result;
@@ -34,14 +34,14 @@ pub fn initializeAllTargets() void {
llvm.InitializeAllAsmParsers();
}
-pub fn getLLVMTriple(allocator: *std.mem.Allocator, target: std.Target) !std.Buffer {
- var result = try std.Buffer.initSize(allocator, 0);
- errdefer result.deinit();
+pub fn getLLVMTriple(allocator: *std.mem.Allocator, target: std.Target) ![:0]u8 {
+ var result = try std.ArrayListSentineled(u8, 0).initSize(allocator, 0);
+ defer result.deinit();
try result.outStream().print(
"{}-unknown-{}-{}",
.{ @tagName(target.cpu.arch), @tagName(target.os.tag), @tagName(target.abi) },
);
- return result;
+ return result.toOwnedSlice();
}
diff --git a/src-self-hosted/value.zig b/src-self-hosted/value.zig
index c2d91eecab..c35289e238 100644
--- a/src-self-hosted/value.zig
+++ b/src-self-hosted/value.zig
@@ -3,7 +3,7 @@ const Scope = @import("scope.zig").Scope;
const Compilation = @import("compilation.zig").Compilation;
const ObjectFile = @import("codegen.zig").ObjectFile;
const llvm = @import("llvm.zig");
-const Buffer = std.Buffer;
+const ArrayListSentineled = std.ArrayListSentineled;
const assert = std.debug.assert;
/// Values are ref-counted, heap-allocated, and copy-on-write
@@ -131,9 +131,9 @@ pub const Value = struct {
/// The main external name that is used in the .o file.
/// TODO https://github.com/ziglang/zig/issues/265
- symbol_name: Buffer,
+ symbol_name: ArrayListSentineled(u8, 0),
- pub fn create(comp: *Compilation, fn_type: *Type.Fn, symbol_name: Buffer) !*FnProto {
+ pub fn create(comp: *Compilation, fn_type: *Type.Fn, symbol_name: ArrayListSentineled(u8, 0)) !*FnProto {
const self = try comp.gpa().create(FnProto);
self.* = FnProto{
.base = Value{
@@ -171,7 +171,7 @@ pub const Value = struct {
/// The main external name that is used in the .o file.
/// TODO https://github.com/ziglang/zig/issues/265
- symbol_name: Buffer,
+ symbol_name: ArrayListSentineled(u8, 0),
/// parent should be the top level decls or container decls
fndef_scope: *Scope.FnDef,
@@ -183,13 +183,13 @@ pub const Value = struct {
block_scope: ?*Scope.Block,
/// Path to the object file that contains this function
- containing_object: Buffer,
+ containing_object: ArrayListSentineled(u8, 0),
link_set_node: *std.TailQueue(?*Value.Fn).Node,
/// Creates a Fn value with 1 ref
/// Takes ownership of symbol_name
- pub fn create(comp: *Compilation, fn_type: *Type.Fn, fndef_scope: *Scope.FnDef, symbol_name: Buffer) !*Fn {
+ pub fn create(comp: *Compilation, fn_type: *Type.Fn, fndef_scope: *Scope.FnDef, symbol_name: ArrayListSentineled(u8, 0)) !*Fn {
const link_set_node = try comp.gpa().create(Compilation.FnLinkSet.Node);
link_set_node.* = Compilation.FnLinkSet.Node{
.data = null,
@@ -209,7 +209,7 @@ pub const Value = struct {
.child_scope = &fndef_scope.base,
.block_scope = null,
.symbol_name = symbol_name,
- .containing_object = Buffer.initNull(comp.gpa()),
+ .containing_object = ArrayListSentineled(u8, 0).initNull(comp.gpa()),
.link_set_node = link_set_node,
};
fn_type.base.base.ref();