jit-allocator
A simple memory allocator for executable code. Use JitAllocator
type to allocate/release memory and virtual_memory
module functions to enable proper access for executable code. So if you want to allocate a new code to execute it is usually done like this:
use *;
let compiled_code = ...;
let compiled_code_size = ...;
let mut jit_allocator = new;
let = jit_allocator.alloc?;
protect_jit_memory; // allows to write to RWX code in current thread,
// it is no-op on all platforms except macOS AArch64
unsafe
protect_jit_memory; // disables writes to RWX code in current thread,
// it is no-op on all platforms except macOS AArch64
flush_instruction_cache; // flush icache, not required on x86-64
// but required on other platforms due
// to lack of coherent dcache/icache.
// When you're done with your machine code you can release it:
unsafe