Bläddra i källkod

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.
Diego 1 år sedan
förälder
incheckning
1e19be412f
1 ändrade filer med 3 tillägg och 2 borttagningar
  1. 3 2
      Tests/LibWasm/test-wasm.cpp

+ 3 - 2
Tests/LibWasm/test-wasm.cpp

@@ -80,8 +80,9 @@ private:
 
 
     static HashMap<Wasm::Linker::Name, Wasm::ExternValue> const& spec_test_namespace()
     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) }, {} };
         Wasm::FunctionType print_i32_type { { Wasm::ValueType(Wasm::ValueType::I32) }, {} };
         auto address_i32 = alloc_noop_function(print_i32_type);
         auto address_i32 = alloc_noop_function(print_i32_type);