LibWasm: Add missing spec extern and prevent spec extern re-use

Add the missing `print` function to the spectest namespace. Also, spec
externs cannot be re-used because operations that modify "memory", for
example, will carry over into subsequent spec test runs. This can be
remedied in the future by implementing some sort of garbage collector
for allocations in the store.
This commit is contained in:
Diego 2024-06-16 07:07:20 -07:00 committed by Ali Mohammad Pur
parent 099b77d60f
commit 1e19be412f
Notes: sideshowbarker 2024-07-17 18:46:30 +09:00

View file

@ -80,8 +80,9 @@ private:
static HashMap<Wasm::Linker::Name, Wasm::ExternValue> const& spec_test_namespace()
{
if (!s_spec_test_namespace.is_empty())
return s_spec_test_namespace;
Wasm::FunctionType print_type { {}, {} };
auto address_print = alloc_noop_function(print_type);
s_spec_test_namespace.set({ "spectest", "print", print_type }, Wasm::ExternValue { *address_print });
Wasm::FunctionType print_i32_type { { Wasm::ValueType(Wasm::ValueType::I32) }, {} };
auto address_i32 = alloc_noop_function(print_i32_type);