feat: add a histrical wit-bindgen

This commit is contained in:
2023-01-01 00:25:48 +08:00
parent 01e8f5a959
commit aa50d63aec
419 changed files with 45283 additions and 1 deletions

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/async_functions/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/flavorful/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/handles/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/invalid/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/lists/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/many_arguments/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/numbers/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/records/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/smoke/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/unions/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,3 @@
include!("../../../../tests/runtime/variants/wasm.rs");
fn main() {}

View File

@@ -0,0 +1,47 @@
//! A small global allocator implementation which is intended to keep track of
//! the number of allocated bytes to ensure that all our integration glue indeed
//! manages memory correctly and doesn't leak anything.
use std::alloc::{GlobalAlloc, Layout, System};
use std::sync::atomic::{AtomicUsize, Ordering::SeqCst};
#[global_allocator]
static ALLOC: A = A;
static ALLOC_AMT: AtomicUsize = AtomicUsize::new(0);
struct A;
unsafe impl GlobalAlloc for A {
unsafe fn alloc(&self, layout: Layout) -> *mut u8 {
let ptr = System.alloc(layout);
if !ptr.is_null() {
ALLOC_AMT.fetch_add(layout.size(), SeqCst);
}
return ptr;
}
unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) {
// Poison all deallocations to try to catch any use-after-free in the
// bindings as early as possible.
std::ptr::write_bytes(ptr, 0xde, layout.size());
ALLOC_AMT.fetch_sub(layout.size(), SeqCst);
System.dealloc(ptr, layout)
}
}
pub fn get() -> usize {
ALLOC_AMT.load(SeqCst)
}
pub fn guard() -> impl Drop {
struct A(usize);
impl Drop for A {
fn drop(&mut self) {
assert_eq!(get(), self.0);
}
}
A(get())
}