diff options
| author | Veikka Tuominen <git@vexu.eu> | 2022-04-22 21:30:54 +0300 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2022-05-16 17:42:51 -0700 |
| commit | eee8fffec70b1d3e2900970dbe836e346e499231 (patch) | |
| tree | ba6418a557532cbe2aee2be1045f84ff0f3ee0ce /lib/std/builtin.zig | |
| parent | 5888446c03b1f77a031f5a8093488a6a2f6decb6 (diff) | |
| download | zig-eee8fffec70b1d3e2900970dbe836e346e499231.tar.gz zig-eee8fffec70b1d3e2900970dbe836e346e499231.zip | |
stage2: implement error return traces
Diffstat (limited to 'lib/std/builtin.zig')
| -rw-r--r-- | lib/std/builtin.zig | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/std/builtin.zig b/lib/std/builtin.zig index d352ac29dc..a8069fa490 100644 --- a/lib/std/builtin.zig +++ b/lib/std/builtin.zig @@ -846,5 +846,16 @@ pub fn default_panic(msg: []const u8, error_return_trace: ?*StackTrace) noreturn } } +pub noinline fn returnError(maybe_st: ?*StackTrace) void { + @setCold(true); + const st = maybe_st orelse return; + addErrRetTraceAddr(st, @returnAddress()); +} + +pub inline fn addErrRetTraceAddr(st: *StackTrace, addr: usize) void { + st.instruction_addresses[st.index & (st.instruction_addresses.len - 1)] = addr; + st.index +%= 1; +} + const std = @import("std.zig"); const root = @import("root"); |
