mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-03-31 09:21:05 +00:00
interpreter: handle closure descriptors with less than two parameters
This might happen because of LTO. Fixes #1244
This commit is contained in:
parent
51989aed88
commit
6f00d9563f
@ -180,8 +180,19 @@ impl Interpreter {
|
|||||||
assert!(self.descriptor_table_idx.is_none());
|
assert!(self.descriptor_table_idx.is_none());
|
||||||
|
|
||||||
let func = module.funcs.get(id);
|
let func = module.funcs.get(id);
|
||||||
assert_eq!(module.types.get(func.ty()).params().len(), 2);
|
let params = module.types.get(func.ty()).params();
|
||||||
self.call(id, module, &[0, 0]);
|
assert!(
|
||||||
|
params.iter().all(|p| *p == walrus::ValType::I32),
|
||||||
|
"closure descriptors should only have i32 params"
|
||||||
|
);
|
||||||
|
let num_params = params.len();
|
||||||
|
assert!(
|
||||||
|
num_params <= 2,
|
||||||
|
"closure descriptors have 2 parameters, but might lose some parameters due to LTO"
|
||||||
|
);
|
||||||
|
|
||||||
|
let args = vec![0; num_params];
|
||||||
|
self.call(id, module, &args);
|
||||||
let descriptor_table_idx =
|
let descriptor_table_idx =
|
||||||
self.descriptor_table_idx
|
self.descriptor_table_idx
|
||||||
.take()
|
.take()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user