realloc test added
This commit is contained in:
parent
e84f308264
commit
e234b7fdbf
@ -115,5 +115,40 @@ pub const SIGNATURES: &'static [UserFunctionDescriptor] = &[
|
|||||||
"_emscripten_memcpy_big",
|
"_emscripten_memcpy_big",
|
||||||
&[I32; 3],
|
&[I32; 3],
|
||||||
Some(I32),
|
Some(I32),
|
||||||
)
|
),
|
||||||
|
Static(
|
||||||
|
"___syscall140",
|
||||||
|
&[I32; 2],
|
||||||
|
Some(I32)
|
||||||
|
),
|
||||||
|
Static(
|
||||||
|
"___syscall146",
|
||||||
|
&[I32; 2],
|
||||||
|
Some(I32)
|
||||||
|
),
|
||||||
|
Static(
|
||||||
|
"___syscall54",
|
||||||
|
&[I32; 2],
|
||||||
|
Some(I32)
|
||||||
|
),
|
||||||
|
Static(
|
||||||
|
"___syscall6",
|
||||||
|
&[I32; 2],
|
||||||
|
Some(I32)
|
||||||
|
),
|
||||||
|
Static(
|
||||||
|
"_llvm_trap",
|
||||||
|
&[I32; 0],
|
||||||
|
None
|
||||||
|
),
|
||||||
|
Static(
|
||||||
|
"abortOnCannotGrowMemory",
|
||||||
|
&[I32; 0],
|
||||||
|
Some(I32)
|
||||||
|
),
|
||||||
|
Static(
|
||||||
|
"___setErrNo",
|
||||||
|
&[I32; 1],
|
||||||
|
None
|
||||||
|
),
|
||||||
];
|
];
|
||||||
|
@ -272,3 +272,27 @@ fn create() {
|
|||||||
));
|
));
|
||||||
assert_eq!(gas_left, U256::from(99_768));
|
assert_eq!(gas_left, U256::from(99_768));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Realloc test
|
||||||
|
#[test]
|
||||||
|
fn realloc() {
|
||||||
|
let code = load_sample!("realloc.wasm");
|
||||||
|
|
||||||
|
let mut params = ActionParams::default();
|
||||||
|
params.gas = U256::from(100_000);
|
||||||
|
params.code = Some(Arc::new(code));
|
||||||
|
params.data = Some(vec![0u8]);
|
||||||
|
let mut ext = FakeExt::new();
|
||||||
|
|
||||||
|
let (gas_left, result) = {
|
||||||
|
let mut interpreter = wasm_interpreter();
|
||||||
|
let result = interpreter.exec(params, &mut ext).expect("Interpreter to execute without any errors");
|
||||||
|
match result {
|
||||||
|
GasLeft::Known(_) => { panic!("Realloc should return payload"); },
|
||||||
|
GasLeft::NeedsReturn { gas_left: gas, data: result, apply_state: _apply } => (gas, result.to_vec()),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
assert_eq!(gas_left, U256::from(98326));
|
||||||
|
assert_eq!(result, vec![0u8; 2]);
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user