Skip to main content

MemoryRuntime

Trait MemoryRuntime 

Source
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§

Source

unsafe fn new_raw(&self, layout: Layout, memcat: u8) -> VmErrorResult<*mut u8>

Source

unsafe fn new_gco_(&self, size: usize, memcat: u8) -> VmErrorResult<GcObject>

Source

unsafe fn free_raw(&self, block: *mut u8, old_layout: Layout, memcat: u8)

Source

unsafe fn free_gco( &self, block: GcObject, old_size: usize, memcat: u8, page: LuaPage, )

Source

unsafe fn realloc_raw( &self, block: *mut u8, old_layout: Layout, new_layout: Layout, memcat: u8, ) -> VmErrorResult<*mut u8>

Source

unsafe fn too_big<T>(&self) -> VmErrorResult<T>

Source

unsafe fn visit_gco( &self, context: *mut (), visitor: unsafe fn(*mut (), LuaPage, GcObject) -> bool, )

Provided Methods§

Source

unsafe fn new_array<T>(&self, count: usize, memcat: u8) -> VmErrorResult<*mut T>

Source

unsafe fn free_array<T>(&self, block: *mut T, count: usize, memcat: u8)

Source

unsafe fn realloc_array<T>( &self, block: *mut T, old_count: usize, new_count: usize, memcat: u8, ) -> VmErrorResult<*mut T>

Source

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".

Implementors§