Files
bun.sh/src/exports.zig
Jarred Sumner 8c67007926 Use mimalloc for a 10% boost
Former-commit-id: 044e11d720bc6742dc53b30b4e88e8be7e76c419
2021-08-23 02:29:07 -07:00

45 lines
1.1 KiB
Zig

const std = @import("std");
const alloc = @import("alloc.zig");
usingnamespace @import("global.zig");
const Root = @import("main_wasm.zig").Root;
pub extern fn init() void {
alloc.dynamic = default_allocator;
alloc.static = default_allocator;
}
/// Convert a slice into known memory representation -- enables C ABI
pub const U8Chunk = packed struct {
const Float = @Type(builtin.TypeInfo{ .Float = .{ .bits = 2 * @bitSizeOf(usize) } });
const Abi = if (builtin.arch.isWasm()) Float else U8Chunk;
ptr: [*]u8,
len: usize,
pub fn toSlice(raw: Abi) []u8 {
const self = @bitCast(U8Chunk, raw);
return self.ptr[0..self.len];
}
pub fn fromSlice(slice: []u8) Abi {
const self = U8Chunk{ .ptr = slice.ptr, .len = slice.len };
return @bitCast(Abi, self);
}
pub fn empty() Abi {
return U8Chunk.fromSlice(&[0]u8{});
}
};
export fn fd_create() ?*Root {
const fd = allocator.create(Root) catch return null;
fd.* = .{};
return fd;
}
export fn fd_destroy(fd: *Root) void {
fd.deinit(allocator);
allocator.destroy(fd);
}