diff --git a/Tests/LibWasm/test-wasm.cpp b/Tests/LibWasm/test-wasm.cpp index bca3bce9bc9..01695053b8c 100644 --- a/Tests/LibWasm/test-wasm.cpp +++ b/Tests/LibWasm/test-wasm.cpp @@ -328,12 +328,6 @@ JS_DEFINE_NATIVE_FUNCTION(WebAssemblyModule::wasm_invoke) } arguments.append(Wasm::Value(Wasm::Reference { Wasm::Reference::Extern { static_cast(double_value) } })); break; - case Wasm::ValueType::Kind::NullFunctionReference: - arguments.append(Wasm::Value(Wasm::Reference { Wasm::Reference::Null { Wasm::ValueType(Wasm::ValueType::Kind::FunctionReference) } })); - break; - case Wasm::ValueType::Kind::NullExternReference: - arguments.append(Wasm::Value(Wasm::Reference { Wasm::Reference::Null { Wasm::ValueType(Wasm::ValueType::Kind::ExternReference) } })); - break; } } diff --git a/Userland/Libraries/LibWasm/AbstractMachine/AbstractMachine.h b/Userland/Libraries/LibWasm/AbstractMachine/AbstractMachine.h index e88172e5e11..63e7f5bfffa 100644 --- a/Userland/Libraries/LibWasm/AbstractMachine/AbstractMachine.h +++ b/Userland/Libraries/LibWasm/AbstractMachine/AbstractMachine.h @@ -108,14 +108,6 @@ public: case ValueType::Kind::F64: m_value = bit_cast(raw_value); break; - case ValueType::Kind::NullFunctionReference: - VERIFY(raw_value == 0); - m_value = Reference { Reference::Null { ValueType(ValueType::Kind::FunctionReference) } }; - break; - case ValueType::Kind::NullExternReference: - VERIFY(raw_value == 0); - m_value = Reference { Reference::Null { ValueType(ValueType::Kind::ExternReference) } }; - break; case ValueType::Kind::V128: m_value = u128(0ull, bit_cast(raw_value)); break; @@ -184,7 +176,7 @@ public: return type.ref().visit( [](Reference::Func const&) { return ValueType::Kind::FunctionReference; }, [](Reference::Null const& null_type) { - return null_type.type.kind() == ValueType::ExternReference ? ValueType::Kind::NullExternReference : ValueType::Kind::NullFunctionReference; + return null_type.type.kind(); }, [](Reference::Extern const&) { return ValueType::Kind::ExternReference; }); })); diff --git a/Userland/Libraries/LibWasm/Types.h b/Userland/Libraries/LibWasm/Types.h index f9e08d02b0e..a7540cf4547 100644 --- a/Userland/Libraries/LibWasm/Types.h +++ b/Userland/Libraries/LibWasm/Types.h @@ -165,8 +165,6 @@ public: V128, FunctionReference, ExternReference, - NullFunctionReference, - NullExternReference, }; explicit ValueType(Kind kind) @@ -176,7 +174,7 @@ public: bool operator==(ValueType const&) const = default; - auto is_reference() const { return m_kind == ExternReference || m_kind == FunctionReference || m_kind == NullExternReference || m_kind == NullFunctionReference; } + auto is_reference() const { return m_kind == ExternReference || m_kind == FunctionReference; } auto is_vector() const { return m_kind == V128; } auto is_numeric() const { return !is_reference() && !is_vector(); } auto kind() const { return m_kind; } @@ -200,10 +198,6 @@ public: return "funcref"; case ExternReference: return "externref"; - case NullFunctionReference: - return "ref.null externref"; - case NullExternReference: - return "ref.null funcref"; } VERIFY_NOT_REACHED(); } diff --git a/Userland/Libraries/LibWeb/WebAssembly/WebAssembly.cpp b/Userland/Libraries/LibWeb/WebAssembly/WebAssembly.cpp index fab14755b5f..eb69cdb00fa 100644 --- a/Userland/Libraries/LibWeb/WebAssembly/WebAssembly.cpp +++ b/Userland/Libraries/LibWeb/WebAssembly/WebAssembly.cpp @@ -412,10 +412,9 @@ JS::ThrowCompletionOr to_webassembly_value(JS::VM& vm, JS::Value va auto number = TRY(value.to_double(vm)); return Wasm::Value { static_cast(number) }; } - case Wasm::ValueType::FunctionReference: - case Wasm::ValueType::NullFunctionReference: { + case Wasm::ValueType::FunctionReference: { if (value.is_null()) - return Wasm::Value { Wasm::ValueType(Wasm::ValueType::NullExternReference), 0ull }; + return Wasm::Value { Wasm::ValueType(Wasm::ValueType::FunctionReference), 0ull }; if (value.is_function()) { auto& function = value.as_function(); @@ -429,7 +428,6 @@ JS::ThrowCompletionOr to_webassembly_value(JS::VM& vm, JS::Value va return vm.throw_completion(JS::ErrorType::NotAnObjectOfType, "Exported function"); } case Wasm::ValueType::ExternReference: - case Wasm::ValueType::NullExternReference: TODO(); case Wasm::ValueType::V128: return vm.throw_completion("Cannot convert a vector value to a javascript value"sv); @@ -453,11 +451,8 @@ JS::Value to_js_value(JS::VM& vm, Wasm::Value& wasm_value) case Wasm::ValueType::FunctionReference: // FIXME: What's the name of a function reference that isn't exported? return create_native_function(vm, wasm_value.to().value().address, "FIXME_IHaveNoIdeaWhatThisShouldBeCalled"); - case Wasm::ValueType::NullFunctionReference: - return JS::js_null(); case Wasm::ValueType::V128: case Wasm::ValueType::ExternReference: - case Wasm::ValueType::NullExternReference: TODO(); } VERIFY_NOT_REACHED();