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).
This commit is contained in:
Ali Mohammad Pur 2024-06-26 02:03:19 +02:00 committed by Andrew Kaster
parent 29665f51aa
commit 55e1ab88ad
Notes: sideshowbarker 2024-07-17 11:33:34 +09:00

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: