diff --git a/Tests/LibWasm/test-wasm.cpp b/Tests/LibWasm/test-wasm.cpp index ecd89f8932..d1143bf1c6 100644 --- a/Tests/LibWasm/test-wasm.cpp +++ b/Tests/LibWasm/test-wasm.cpp @@ -173,10 +173,10 @@ JS_DEFINE_NATIVE_FUNCTION(WebAssemblyModule::wasm_invoke) auto value = vm.argument(index++).to_double(global_object); switch (param.kind()) { case Wasm::ValueType::Kind::I32: - arguments.append(Wasm::Value(static_cast(value))); + arguments.append(Wasm::Value(param, static_cast(value))); break; case Wasm::ValueType::Kind::I64: - arguments.append(Wasm::Value(static_cast(value))); + arguments.append(Wasm::Value(param, static_cast(value))); break; case Wasm::ValueType::Kind::F32: arguments.append(Wasm::Value(static_cast(value))); diff --git a/Userland/Libraries/LibWasm/AbstractMachine/Interpreter.cpp b/Userland/Libraries/LibWasm/AbstractMachine/Interpreter.cpp index 758d2ddddd..120d2fb0f7 100644 --- a/Userland/Libraries/LibWasm/AbstractMachine/Interpreter.cpp +++ b/Userland/Libraries/LibWasm/AbstractMachine/Interpreter.cpp @@ -700,17 +700,17 @@ void BytecodeInterpreter::interpret(Configuration& configuration, InstructionPoi case Instructions::i32_popcnt.value(): goto unimplemented; case Instructions::i32_add.value(): - OVF_CHECKED_BINARY_NUMERIC_OPERATION(i32, +, i32); + BINARY_NUMERIC_OPERATION(i32, +, i32); case Instructions::i32_sub.value(): - OVF_CHECKED_BINARY_NUMERIC_OPERATION(i32, -, i32); + BINARY_NUMERIC_OPERATION(i32, -, i32); case Instructions::i32_mul.value(): - OVF_CHECKED_BINARY_NUMERIC_OPERATION(i32, *, i32); + BINARY_NUMERIC_OPERATION(i32, *, i32); case Instructions::i32_divs.value(): - OVF_CHECKED_BINARY_NUMERIC_OPERATION(i32, /, i32, TRAP_IF_NOT(rhs.value() != 0)); + BINARY_NUMERIC_OPERATION(i32, /, i32, TRAP_IF_NOT(!(Checked(lhs.value()) /= rhs.value()).has_overflow())); case Instructions::i32_divu.value(): - OVF_CHECKED_BINARY_NUMERIC_OPERATION(u32, /, i32, TRAP_IF_NOT(rhs.value() != 0)); + BINARY_NUMERIC_OPERATION(u32, /, i32, TRAP_IF_NOT(rhs.value() != 0)); case Instructions::i32_rems.value(): - BINARY_NUMERIC_OPERATION(i32, %, i32, TRAP_IF_NOT(rhs.value() != 0)); + BINARY_NUMERIC_OPERATION(i32, %, i32, TRAP_IF_NOT(!(Checked(lhs.value()) /= rhs.value()).has_overflow())); case Instructions::i32_remu.value(): BINARY_NUMERIC_OPERATION(u32, %, i32, TRAP_IF_NOT(rhs.value() != 0)); case Instructions::i32_and.value(): @@ -742,7 +742,7 @@ void BytecodeInterpreter::interpret(Configuration& configuration, InstructionPoi case Instructions::i64_divu.value(): OVF_CHECKED_BINARY_NUMERIC_OPERATION(u64, /, i64, TRAP_IF_NOT(rhs.value() != 0)); case Instructions::i64_rems.value(): - BINARY_NUMERIC_OPERATION(i64, %, i64, TRAP_IF_NOT(rhs.value() != 0)); + BINARY_NUMERIC_OPERATION(i64, %, i64, TRAP_IF_NOT(!(Checked(lhs.value()) /= rhs.value()).has_overflow())); case Instructions::i64_remu.value(): BINARY_NUMERIC_OPERATION(u64, %, i64, TRAP_IF_NOT(rhs.value() != 0)); case Instructions::i64_and.value():