authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-10-09 12:33:48-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2018-10-09 13:16:50-04:00
log84690ee05ecb1ee03a98c8bb62ae70e88daf23cd
tree6f768e1c4c9b980a53671161e319fa873247a37a
parent6b93495792678bd00a6205967bb2704a9a35e9c7
signature Commit is signed but in an unrecognized format.

std/special/bootstrap: inline some functions to improve stack traces


1 files changed, 6 insertions(+), 2 deletions(-)

std/special/bootstrap.zig+6-2
......@@ -66,7 +66,9 @@ fn posixCallMainAndExit() noreturn {
6666 std.os.posix.exit(callMainWithArgs(argc, argv, envp));
6767}
6868
69fn callMainWithArgs(argc: usize, argv: [*][*]u8, envp: [][*]u8) u8 {
69// This is marked inline because for some reason LLVM in release mode fails to inline it,
70// and we want fewer call frames in stack traces.
71inline fn callMainWithArgs(argc: usize, argv: [*][*]u8, envp: [][*]u8) u8 {
7072 std.os.ArgIteratorPosix.raw = argv[0..argc];
7173 std.os.posix_environ_raw = envp;
7274 return callMain();
......@@ -79,7 +81,9 @@ extern fn main(c_argc: i32, c_argv: [*][*]u8, c_envp: [*]?[*]u8) i32 {
7981 return callMainWithArgs(@intCast(usize, c_argc), c_argv, envp);
8082}
8183
82fn callMain() u8 {
84// This is marked inline because for some reason LLVM in release mode fails to inline it,
85// and we want fewer call frames in stack traces.
86inline fn callMain() u8 {
8387 switch (@typeId(@typeOf(root.main).ReturnType)) {
8488 builtin.TypeId.NoReturn => {
8589 root.main();