add beginning of print stack trace function
introduce std.debug and move std.assert to std.debug.assert add mem.copy
This commit is contained in:
parent
2c710382a8
commit
7edef4f3fd
@ -219,6 +219,7 @@ install(FILES "${CMAKE_SOURCE_DIR}/std/mem.zig" DESTINATION "${ZIG_STD_DEST}")
|
|||||||
install(FILES "${CMAKE_SOURCE_DIR}/std/list.zig" DESTINATION "${ZIG_STD_DEST}")
|
install(FILES "${CMAKE_SOURCE_DIR}/std/list.zig" DESTINATION "${ZIG_STD_DEST}")
|
||||||
install(FILES "${CMAKE_SOURCE_DIR}/std/hash_map.zig" DESTINATION "${ZIG_STD_DEST}")
|
install(FILES "${CMAKE_SOURCE_DIR}/std/hash_map.zig" DESTINATION "${ZIG_STD_DEST}")
|
||||||
install(FILES "${CMAKE_SOURCE_DIR}/std/empty.zig" DESTINATION "${ZIG_STD_DEST}")
|
install(FILES "${CMAKE_SOURCE_DIR}/std/empty.zig" DESTINATION "${ZIG_STD_DEST}")
|
||||||
|
install(FILES "${CMAKE_SOURCE_DIR}/std/debug.zig" DESTINATION "${ZIG_STD_DEST}")
|
||||||
|
|
||||||
add_executable(run_tests ${TEST_SOURCES})
|
add_executable(run_tests ${TEST_SOURCES})
|
||||||
target_link_libraries(run_tests)
|
target_link_libraries(run_tests)
|
||||||
|
16
std/debug.zig
Normal file
16
std/debug.zig
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
const io = @import("io.zig");
|
||||||
|
|
||||||
|
pub fn assert(b: bool) {
|
||||||
|
if (!b) unreachable{}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn print_stack_trace() {
|
||||||
|
var maybe_fp: ?&const u8 = @frame_address();
|
||||||
|
while (true) {
|
||||||
|
const fp = maybe_fp ?? break;
|
||||||
|
const return_address = *(&const usize)(usize(fp) + @sizeof(usize));
|
||||||
|
%%io.stderr.print_u64(return_address);
|
||||||
|
%%io.stderr.printf("\n");
|
||||||
|
maybe_fp = *(&const ?&const u8)(fp);
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
const assert = @import("index.zig").assert;
|
const assert = @import("debug.zig").assert;
|
||||||
const math = @import("math.zig");
|
const math = @import("math.zig");
|
||||||
const mem = @import("mem.zig");
|
const mem = @import("mem.zig");
|
||||||
const Allocator = mem.Allocator;
|
const Allocator = mem.Allocator;
|
||||||
|
@ -8,13 +8,10 @@ pub const net = @import("net.zig");
|
|||||||
pub const list = @import("list.zig");
|
pub const list = @import("list.zig");
|
||||||
pub const hash_map = @import("hash_map.zig");
|
pub const hash_map = @import("hash_map.zig");
|
||||||
pub const mem = @import("mem.zig");
|
pub const mem = @import("mem.zig");
|
||||||
|
pub const debug = @import("debug.zig");
|
||||||
pub const linux = switch(@compile_var("os")) {
|
pub const linux = switch(@compile_var("os")) {
|
||||||
linux => @import("linux.zig"),
|
linux => @import("linux.zig"),
|
||||||
else => null_import,
|
else => null_import,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub fn assert(b: bool) {
|
|
||||||
if (!b) unreachable{}
|
|
||||||
}
|
|
||||||
|
|
||||||
const null_import = @import("empty.zig");
|
const null_import = @import("empty.zig");
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
const assert = @import("index.zig").assert;
|
const assert = @import("debug.zig").assert;
|
||||||
const mem = @import("mem.zig");
|
const mem = @import("mem.zig");
|
||||||
const Allocator = mem.Allocator;
|
const Allocator = mem.Allocator;
|
||||||
|
|
||||||
|
@ -1,3 +1,5 @@
|
|||||||
|
const assert = @import("debug.zig").assert;
|
||||||
|
|
||||||
pub error NoMem;
|
pub error NoMem;
|
||||||
|
|
||||||
pub type Context = u8;
|
pub type Context = u8;
|
||||||
@ -8,3 +10,9 @@ pub struct Allocator {
|
|||||||
context: ?&Context,
|
context: ?&Context,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Copy all of source into dest at position 0.
|
||||||
|
/// dest.len must be >= source.len.
|
||||||
|
pub fn copy(T)(dest: []T, source: []T) {
|
||||||
|
assert(dest.len >= source.len);
|
||||||
|
@memcpy(dest.ptr, source.ptr, @sizeof(T) * source.len);
|
||||||
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
const linux = @import("linux.zig");
|
const linux = @import("linux.zig");
|
||||||
const errno = @import("errno.zig");
|
const errno = @import("errno.zig");
|
||||||
const assert = @import("index.zig").assert;
|
const assert = @import("debug.zig").assert;
|
||||||
|
|
||||||
pub error SigInterrupt;
|
pub error SigInterrupt;
|
||||||
pub error Unexpected;
|
pub error Unexpected;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
const assert = @import("index.zig").assert;
|
const assert = @import("debug.zig").assert;
|
||||||
|
|
||||||
pub const eql = slice_eql(u8);
|
pub const eql = slice_eql(u8);
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
const std = @import("std");
|
const std = @import("std");
|
||||||
const assert = std.assert;
|
const assert = std.debug.assert;
|
||||||
const str = std.str;
|
const str = std.str;
|
||||||
const cstr = std.cstr;
|
const cstr = std.cstr;
|
||||||
const other = @import("other.zig");
|
const other = @import("other.zig");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user