mirror of
https://github.com/fluencelabs/wasm-bindgen
synced 2025-03-16 10:10:52 +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());
|
||||
|
||||
let func = module.funcs.get(id);
|
||||
assert_eq!(module.types.get(func.ty()).params().len(), 2);
|
||||
self.call(id, module, &[0, 0]);
|
||||
let params = module.types.get(func.ty()).params();
|
||||
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 =
|
||||
self.descriptor_table_idx
|
||||
.take()
|
||||
|
Loading…
x
Reference in New Issue
Block a user