aboutsummaryrefslogtreecommitdiff
path: root/src/javascript/jsc/api/ffi.zig
diff options
context:
space:
mode:
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);