#![no_std]
#[cfg(test)]
#[macro_use]
extern crate alloc;
extern crate spin;
#[derive(Eq, PartialEq)]
struct PageCount(usize);
impl PageCount {
fn size_in_bytes(self) -> usize {
self.0 * PAGE_SIZE
}
}
const PAGE_SIZE: usize = 65536;
const ERROR_PAGE_COUNT: PageCount = PageCount(usize::MAX);
trait MemoryGrower {
fn memory_grow(&self, delta: PageCount) -> PageCount;
}
pub struct DefaultGrower;
#[cfg(target_arch = "wasm32")]
impl MemoryGrower for DefaultGrower {
fn memory_grow(&self, delta: PageCount) -> PageCount {
PageCount(core::arch::wasm32::memory_grow(0, delta.0))
}
}
mod free_list_allocator;
mod locked_allocator;
mod single_threaded_allocator;
mod trivial_allocators;
#[cfg(target_arch = "wasm32")]
pub use crate::free_list_allocator::FreeListAllocator;
pub use crate::locked_allocator::LockedAllocator;
pub use crate::single_threaded_allocator::AssumeSingleThreaded;
pub use crate::trivial_allocators::FailAllocator;
#[cfg(target_arch = "wasm32")]
pub use crate::trivial_allocators::{LeakingAllocator, LeakingPageAllocator};