Initial reorg.
This is largely the same as #305, but updated for the current tree.
This commit is contained in:
44
crates/environ/src/tunables.rs
Normal file
44
crates/environ/src/tunables.rs
Normal file
@@ -0,0 +1,44 @@
|
||||
/// Tunable parameters for WebAssembly compilation.
|
||||
#[derive(Clone)]
|
||||
pub struct Tunables {
|
||||
/// For static heaps, the size of the heap protected by bounds checking.
|
||||
pub static_memory_bound: u32,
|
||||
|
||||
/// The size of the offset guard for static heaps.
|
||||
pub static_memory_offset_guard_size: u64,
|
||||
|
||||
/// The size of the offset guard for dynamic heaps.
|
||||
pub dynamic_memory_offset_guard_size: u64,
|
||||
}
|
||||
|
||||
impl Default for Tunables {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
/// Size in wasm pages of the bound for static memories.
|
||||
static_memory_bound: 0x4000,
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
/// Size in wasm pages of the bound for static memories.
|
||||
///
|
||||
/// When we allocate 4 GiB of address space, we can avoid the
|
||||
/// need for explicit bounds checks.
|
||||
static_memory_bound: 0x1_0000,
|
||||
|
||||
#[cfg(target_pointer_width = "32")]
|
||||
/// Size in bytes of the offset guard for static memories.
|
||||
static_memory_offset_guard_size: 0x1_0000,
|
||||
#[cfg(target_pointer_width = "64")]
|
||||
/// Size in bytes of the offset guard for static memories.
|
||||
///
|
||||
/// Allocating 2 GiB of address space lets us translate wasm
|
||||
/// offsets into x86 offsets as aggressively as we can.
|
||||
static_memory_offset_guard_size: 0x8000_0000,
|
||||
|
||||
/// Size in bytes of the offset guard for dynamic memories.
|
||||
///
|
||||
/// Allocate a small guard to optimize common cases but without
|
||||
/// wasting too much memor.
|
||||
dynamic_memory_offset_guard_size: 0x1_0000,
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user