mirror of
https://github.com/roc-lang/roc.git
synced 2025-09-28 06:14:46 +00:00
Add some #[repr(C)] annotations
This commit is contained in:
parent
cd7b219764
commit
dd8f63b1ab
1 changed files with 14 additions and 10 deletions
|
@ -47,6 +47,7 @@ macro_rules! run_jit_function {
|
||||||
use std::mem::MaybeUninit;
|
use std::mem::MaybeUninit;
|
||||||
|
|
||||||
#[derive(Debug, Copy, Clone)]
|
#[derive(Debug, Copy, Clone)]
|
||||||
|
#[repr(C)]
|
||||||
struct Failure {
|
struct Failure {
|
||||||
start_line: u32,
|
start_line: u32,
|
||||||
end_line: u32,
|
end_line: u32,
|
||||||
|
@ -60,9 +61,14 @@ macro_rules! run_jit_function {
|
||||||
.ok()
|
.ok()
|
||||||
.ok_or(format!("Unable to JIT compile `{}`", $main_fn_name))
|
.ok_or(format!("Unable to JIT compile `{}`", $main_fn_name))
|
||||||
.expect("errored");
|
.expect("errored");
|
||||||
let get_expect_failures: libloading::Symbol<
|
|
||||||
unsafe extern "C" fn() -> (*const Failure, usize),
|
#[repr(C)]
|
||||||
> = $lib
|
struct Failures {
|
||||||
|
failures: *const Failure,
|
||||||
|
count: usize,
|
||||||
|
}
|
||||||
|
|
||||||
|
let get_expect_failures: libloading::Symbol<unsafe extern "C" fn() -> Failures> = $lib
|
||||||
.get(bitcode::UTILS_GET_EXPECT_FAILURES.as_bytes())
|
.get(bitcode::UTILS_GET_EXPECT_FAILURES.as_bytes())
|
||||||
.ok()
|
.ok()
|
||||||
.ok_or(format!(
|
.ok_or(format!(
|
||||||
|
@ -73,15 +79,13 @@ macro_rules! run_jit_function {
|
||||||
let mut main_result = MaybeUninit::uninit();
|
let mut main_result = MaybeUninit::uninit();
|
||||||
|
|
||||||
main(main_result.as_mut_ptr());
|
main(main_result.as_mut_ptr());
|
||||||
let (failures_ptr, num_failures) = get_expect_failures();
|
let failures = get_expect_failures();
|
||||||
let mut failures = std::vec::Vec::new();
|
|
||||||
|
|
||||||
for index in 0..num_failures {
|
if failures.count > 0 {
|
||||||
failures.push(*failures_ptr.add(index));
|
let failures =
|
||||||
}
|
unsafe { core::slice::from_raw_parts(failures.failures, failures.count) };
|
||||||
|
|
||||||
if (num_failures > 0) {
|
panic!("Failed with {} failures. Failures: ", failures.len());
|
||||||
panic!("Failed with {} failures. Failures: ", num_failures);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
match main_result.assume_init().into() {
|
match main_result.assume_init().into() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue