three_em/
alloc.rs

1//! Allocator APIs exposed to the host.
2use ::std::alloc::alloc;
3use ::std::alloc::dealloc;
4use ::std::alloc::Layout;
5use ::std::mem::align_of;
6
7#[no_mangle]
8pub unsafe fn contract_alloc(len: usize) -> *mut u8 {
9  let align = align_of::<usize>();
10  let layout = Layout::from_size_align_unchecked(len, align);
11  alloc(layout)
12}
13
14#[no_mangle]
15pub unsafe fn contract_dealloc(ptr: *mut u8, size: usize) {
16  let align = align_of::<usize>();
17  let layout = Layout::from_size_align_unchecked(size, align);
18  dealloc(ptr, layout);
19}