Tests/LibWasm: Don't ignore the result of BigInt::export_data()

Prior to this commit, the test runner was ignoring the result, which
meant that values that fit in less than 128 bits were shifted to remove
the zero words (which is obviously incorrect).

(cherry picked from commit 55e1ab88ad428db20554ae6a04465f20880a06ea)
This commit is contained in:
Ali Mohammad Pur 2024-06-26 02:03:19 +02:00 committed by Ali Mohammad Pur
parent 0520de42f1
commit 1c19d3cfc4

View file

@ -285,10 +285,13 @@ JS_DEFINE_NATIVE_FUNCTION(WebAssemblyModule::wasm_invoke)
}
u128 bits = 0;
(void)argument.as_bigint().big_integer().unsigned_value().export_data({ bit_cast<u8*>(&bits), sizeof(bits) });
auto bytes = argument.as_bigint().big_integer().unsigned_value().export_data({ bit_cast<u8*>(&bits), sizeof(bits) });
VERIFY(!argument.as_bigint().big_integer().is_negative());
arguments.append(Wasm::Value(bits));
if constexpr (AK::HostIsLittleEndian)
arguments.append(Wasm::Value(bits << (128 - bytes * 8)));
else
arguments.append(Wasm::Value(bits >> (128 - bytes * 8)));
break;
}
case Wasm::ValueType::Kind::FunctionReference: