diff options
Diffstat (limited to 'deps/v8/src/wasm/wasm-external-refs.cc')
-rw-r--r-- | deps/v8/src/wasm/wasm-external-refs.cc | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/deps/v8/src/wasm/wasm-external-refs.cc b/deps/v8/src/wasm/wasm-external-refs.cc index 0317bb7bf5..9fc3b707c4 100644 --- a/deps/v8/src/wasm/wasm-external-refs.cc +++ b/deps/v8/src/wasm/wasm-external-refs.cc @@ -10,6 +10,7 @@ #include "include/v8config.h" #include "src/base/bits.h" +#include "src/memcopy.h" #include "src/utils.h" #include "src/v8memory.h" #include "src/wasm/wasm-external-refs.h" @@ -232,13 +233,13 @@ uint32_t word64_popcnt_wrapper(Address data) { uint32_t word32_rol_wrapper(Address data) { uint32_t input = ReadUnalignedValue<uint32_t>(data); uint32_t shift = ReadUnalignedValue<uint32_t>(data + sizeof(input)) & 31; - return (input << shift) | (input >> (32 - shift)); + return (input << shift) | (input >> ((32 - shift) & 31)); } uint32_t word32_ror_wrapper(Address data) { uint32_t input = ReadUnalignedValue<uint32_t>(data); uint32_t shift = ReadUnalignedValue<uint32_t>(data + sizeof(input)) & 31; - return (input >> shift) | (input << (32 - shift)); + return (input >> shift) | (input << ((32 - shift) & 31)); } void float64_pow_wrapper(Address data) { @@ -247,6 +248,14 @@ void float64_pow_wrapper(Address data) { WriteUnalignedValue<double>(data, Pow(x, y)); } +void memory_copy_wrapper(Address dst, Address src, uint32_t size) { + MemMove(reinterpret_cast<void*>(dst), reinterpret_cast<void*>(src), size); +} + +void memory_fill_wrapper(Address dst, uint32_t value, uint32_t size) { + memset(reinterpret_cast<void*>(dst), value, size); +} + static WasmTrapCallbackForTesting wasm_trap_callback_for_testing = nullptr; void set_trap_callback_for_testing(WasmTrapCallbackForTesting callback) { |