Refactor limits emit and memory growing

This commit is contained in:
Rerumu 2021-11-26 20:13:41 -05:00
parent 2746c1e3d1
commit c0a5d0c7dd
3 changed files with 16 additions and 17 deletions

View File

@ -327,7 +327,7 @@ do
memory.min = min memory.min = min
memory.max = max memory.max = max
memory.data = ffi.new(vla_u8, min * WASM_PAGE_SIZE) memory.data = vla_u8(min * WASM_PAGE_SIZE, 0)
return memory return memory
end end
@ -340,7 +340,7 @@ do
local old = memory.min local old = memory.min
local new = old + num local new = old + num
if memory.max and new > memory.max then if new > memory.max then
return -1 return -1
else else
grow_unchecked(memory, old, new) grow_unchecked(memory, old, new)

View File

@ -273,7 +273,7 @@ do
local old = memory.min local old = memory.min
local new = old + num local new = old + num
if memory.max and new > memory.max then if new > memory.max then
return -1 return -1
else else
memory.min = new memory.min = new

View File

@ -21,26 +21,25 @@ fn aux_internal_index(internal: Internal) -> u32 {
} }
} }
fn gen_table_init(limit: &ResizableLimits, w: &mut dyn Write) -> Result<()> { fn new_limit_max(limits: &ResizableLimits) -> String {
write!(w, "{{ min = {}", limit.initial())?; match limits.maximum() {
Some(v) => v.to_string(),
if let Some(max) = limit.maximum() { None => "math.huge".to_string(),
write!(w, ", max = {}", max)?;
} }
}
write!(w, ", data = {{}} }}") fn gen_table_init(limit: &ResizableLimits, w: &mut dyn Write) -> Result<()> {
let a = limit.initial();
let b = new_limit_max(limit);
write!(w, "{{ min = {}, max = {}, data = {{}} }}", a, b)
} }
fn gen_memory_init(limit: &ResizableLimits, w: &mut dyn Write) -> Result<()> { fn gen_memory_init(limit: &ResizableLimits, w: &mut dyn Write) -> Result<()> {
write!(w, "rt.memory.new({}, ", limit.initial())?; let a = limit.initial();
let b = new_limit_max(limit);
if let Some(max) = limit.maximum() { write!(w, "rt.memory.new({}, {})", a, b)
write!(w, "{}", max)?;
} else {
write!(w, "nil")?;
}
write!(w, ")")
} }
fn gen_nil_array(name: &str, len: usize, w: &mut dyn Write) -> Result<()> { fn gen_nil_array(name: &str, len: usize, w: &mut dyn Write) -> Result<()> {