Add grow_memory benchmark
This commit is contained in:
parent
ad4236263a
commit
a774c066c7
|
@ -276,3 +276,53 @@ fn recursive_trap(b: &mut Bencher) {
|
||||||
assert_matches!(value, Err(_));
|
assert_matches!(value, Err(_));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[bench]
|
||||||
|
fn grow_memory(b: &mut Bencher) {
|
||||||
|
let wasm = wabt::wat2wasm(
|
||||||
|
r#"
|
||||||
|
(module
|
||||||
|
(memory 1)
|
||||||
|
|
||||||
|
(func $call (export "call") (param i32)
|
||||||
|
loop $l
|
||||||
|
;; store 1 into newly allocated area
|
||||||
|
(i32.store
|
||||||
|
;; calculate the start address of newly allocated memory area
|
||||||
|
(i32.mul
|
||||||
|
;; grow_memory by 1 page. This will yield the previous size
|
||||||
|
(grow_memory
|
||||||
|
(i32.const 1)
|
||||||
|
)
|
||||||
|
(i32.const 65535)
|
||||||
|
)
|
||||||
|
(i32.const 1)
|
||||||
|
)
|
||||||
|
|
||||||
|
(set_local 0
|
||||||
|
(i32.sub
|
||||||
|
(get_local 0)
|
||||||
|
(i32.const 1)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
(br_if 0
|
||||||
|
(get_local 0)
|
||||||
|
)
|
||||||
|
end
|
||||||
|
)
|
||||||
|
)
|
||||||
|
"#
|
||||||
|
).unwrap();
|
||||||
|
let module = Module::from_buffer(&wasm).unwrap();
|
||||||
|
|
||||||
|
b.iter(|| {
|
||||||
|
let instance = ModuleInstance::new(&module, &ImportsBuilder::default())
|
||||||
|
.expect("failed to instantiate wasm module")
|
||||||
|
.assert_no_start();
|
||||||
|
|
||||||
|
let value = instance
|
||||||
|
.invoke_export("call", &[RuntimeValue::I32(1000)], &mut NopExternals);
|
||||||
|
assert_matches!(value, Ok(_));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue