aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/api/ffi.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-05-03 22:36:11 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2022-05-03 22:36:44 -0700
commit162e8911db21110f25b0814f5c4f66833000ea99 (patch)
treea7afe398c0cdcfb04b025e7a72c6ee9ae2f5fb7e /src/javascript/jsc/api/ffi.zig
parentbea2cc9cbcb3e1bd4b9360aaf215ba07f983922a (diff)
downloadbun-162e8911db21110f25b0814f5c4f66833000ea99.tar.gz
bun-162e8911db21110f25b0814f5c4f66833000ea99.tar.zst
bun-162e8911db21110f25b0814f5c4f66833000ea99.zip
Fix x64 build
Diffstat (limited to 'src/javascript/jsc/api/ffi.zig')
-rw-r--r--src/javascript/jsc/api/ffi.zig22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/javascript/jsc/api/ffi.zig b/src/javascript/jsc/api/ffi.zig
index 71087b6b6..c5ad6bf59 100644
--- a/src/javascript/jsc/api/ffi.zig
+++ b/src/javascript/jsc/api/ffi.zig
@@ -327,10 +327,11 @@ pub const FFI = struct {
allocator.free(bun.constStrToU8(std.mem.span(value.base_name.?)));
value.arg_types.clearAndFree(allocator);
}
- symbols.clearAndFree(allocator);
- dylib.close();
+
const res = ZigString.init(err.msg).toErrorInstance(global);
function.deinit(allocator);
+ symbols.clearAndFree(allocator);
+ dylib.close();
return res;
},
.pending => {
@@ -618,6 +619,7 @@ pub const FFI = struct {
"Bun_FFI_PointerOffsetToArgumentsList",
std.fmt.bufPrintZ(&symbol_buf, "{d}", .{Sizes.Bun_FFI_PointerOffsetToArgumentsList}) catch unreachable,
);
+ CompilerRT.define(state);
// TCC.tcc_define_symbol(
// state,
@@ -702,13 +704,17 @@ pub const FFI = struct {
@memcpy(dest, source, byte_count);
}
- pub fn inject(state: *TCC.TCCState) void {
- _ = TCC.tcc_add_symbol(state, "memset", &memset);
- _ = TCC.tcc_add_symbol(state, "memcpy", &memcpy);
-
+ pub fn define(state: *TCC.TCCState) void {
if (comptime Environment.isX64) {
_ = TCC.tcc_define_symbol(state, "NEEDS_COMPILER_RT_FUNCTIONS", "1");
+ // there
+ _ = TCC.tcc_compile_string(state, @embedFile(("libtcc1.c")));
}
+ }
+
+ pub fn inject(state: *TCC.TCCState) void {
+ _ = TCC.tcc_add_symbol(state, "memset", &memset);
+ _ = TCC.tcc_add_symbol(state, "memcpy", &memcpy);
_ = TCC.tcc_add_symbol(
state,
@@ -763,6 +769,8 @@ pub const FFI = struct {
_ = TCC.tcc_set_output_type(state, TCC.TCC_OUTPUT_MEMORY);
+ CompilerRT.define(state);
+
const compilation_result = TCC.tcc_compile_string(
state,
source_code.items.ptr,
@@ -779,8 +787,8 @@ pub const FFI = struct {
return;
}
- CompilerRT.inject(state);
+ CompilerRT.inject(state);
Output.debug("here", .{});
_ = TCC.tcc_add_symbol(state, "bun_call", workaround.bun_call.*);
_ = TCC.tcc_add_symbol(state, "cachedJSContext", js_context);