Merge pull request #2956 from bakaq/update_arcu_libffi

Update dependencies and fix breaking changes in libffi-sys and arcu
This commit is contained in:
Mark Thom
2025-05-13 21:26:29 -07:00
committed by GitHub
4 changed files with 345 additions and 267 deletions

594
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -38,7 +38,7 @@ to-syn-value_derive = "0.1.1"
walkdir = "2"
[dependencies]
arcu = { version = "0.1.1", features = ["thread_local_counter"] }
arcu = { version = "0.1.2", features = ["thread_local_counter"] }
base64 = "0.22.1"
bit-set = "0.8.0"
bitvec = "1"

View File

@@ -86,6 +86,10 @@ pub struct F64Table {
update: Mutex<()>,
}
// TODO: Actually prove this, as it's probably unsound right now
unsafe impl Send for F64Table {}
unsafe impl Sync for F64Table {}
#[inline(always)]
pub fn lookup_float(
offset: F64Offset,

View File

@@ -53,13 +53,23 @@ pub struct ForeignFunctionTable {
structs: HashMap<String, StructImpl>,
}
#[derive(Debug, Clone)]
#[derive(Clone)]
struct StructImpl {
ffi_type: ffi_type,
fields: Vec<*mut ffi_type>,
atom_fields: Vec<Atom>,
}
impl std::fmt::Debug for StructImpl {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
f.debug_struct("StructImpl")
.field("ffi_type", &&"<???>")
.field("fields", &self.fields)
.field("atom_fields", &self.atom_fields)
.finish()
}
}
struct PointerArgs {
pointers: Vec<*mut c_void>,
_memory: Vec<Box<dyn Any>>,