pub trait MemoryRuntime: Sealed {
// Required methods
unsafe fn new_raw(
&self,
layout: Layout,
memcat: u8,
) -> VmErrorResult<*mut u8>;
unsafe fn new_gco_(
&self,
size: usize,
memcat: u8,
) -> VmErrorResult<GcObject>;
unsafe fn free_raw(&self, block: *mut u8, old_layout: Layout, memcat: u8);
unsafe fn free_gco(
&self,
block: GcObject,
old_size: usize,
memcat: u8,
page: LuaPage,
);
unsafe fn realloc_raw(
&self,
block: *mut u8,
old_layout: Layout,
new_layout: Layout,
memcat: u8,
) -> VmErrorResult<*mut u8>;
unsafe fn too_big<T>(&self) -> VmErrorResult<T>;
unsafe fn visit_gco(
&self,
context: *mut (),
visitor: unsafe fn(*mut (), LuaPage, GcObject) -> bool,
);
// Provided methods
unsafe fn new_array<T>(
&self,
count: usize,
memcat: u8,
) -> VmErrorResult<*mut T> { ... }
unsafe fn free_array<T>(&self, block: *mut T, count: usize, memcat: u8) { ... }
unsafe fn realloc_array<T>(
&self,
block: *mut T,
old_count: usize,
new_count: usize,
memcat: u8,
) -> VmErrorResult<*mut T> { ... }
unsafe fn array_layout<T>(&self, count: usize) -> VmErrorResult<Layout> { ... }
}Expand description
Unstable VM allocation and object-visitation capability.
§Safety
Layouts, sizes, categories, pages, and pointers must describe allocations owned by this thread’s VM. Reallocation and free operations require the exact original layout contract and invalidate every outstanding view into the affected storage.
Required Methods§
unsafe fn new_raw(&self, layout: Layout, memcat: u8) -> VmErrorResult<*mut u8>
unsafe fn new_gco_(&self, size: usize, memcat: u8) -> VmErrorResult<GcObject>
unsafe fn free_raw(&self, block: *mut u8, old_layout: Layout, memcat: u8)
unsafe fn free_gco( &self, block: GcObject, old_size: usize, memcat: u8, page: LuaPage, )
unsafe fn realloc_raw( &self, block: *mut u8, old_layout: Layout, new_layout: Layout, memcat: u8, ) -> VmErrorResult<*mut u8>
unsafe fn too_big<T>(&self) -> VmErrorResult<T>
unsafe fn visit_gco( &self, context: *mut (), visitor: unsafe fn(*mut (), LuaPage, GcObject) -> bool, )
Provided Methods§
unsafe fn new_array<T>(&self, count: usize, memcat: u8) -> VmErrorResult<*mut T>
unsafe fn free_array<T>(&self, block: *mut T, count: usize, memcat: u8)
unsafe fn realloc_array<T>( &self, block: *mut T, old_count: usize, new_count: usize, memcat: u8, ) -> VmErrorResult<*mut T>
unsafe fn array_layout<T>(&self, count: usize) -> VmErrorResult<Layout>
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".