|
|
@@ -479,7 +479,7 @@ LOAD_PTR(void *addr)
|
|
|
addr = POP_I32(); \
|
|
|
\
|
|
|
if (opcode == WASM_OP_ATOMIC_RMW_I32_##OP_NAME##8_U) { \
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr); \
|
|
|
+ CHECK_MEMORY_OVERFLOW(1); \
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(1); \
|
|
|
\
|
|
|
shared_memory_lock(memory); \
|
|
|
@@ -488,7 +488,7 @@ LOAD_PTR(void *addr)
|
|
|
shared_memory_unlock(memory); \
|
|
|
} \
|
|
|
else if (opcode == WASM_OP_ATOMIC_RMW_I32_##OP_NAME##16_U) { \
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr); \
|
|
|
+ CHECK_MEMORY_OVERFLOW(2); \
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(2); \
|
|
|
\
|
|
|
shared_memory_lock(memory); \
|
|
|
@@ -497,7 +497,7 @@ LOAD_PTR(void *addr)
|
|
|
shared_memory_unlock(memory); \
|
|
|
} \
|
|
|
else { \
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr); \
|
|
|
+ CHECK_MEMORY_OVERFLOW(4); \
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4); \
|
|
|
\
|
|
|
shared_memory_lock(memory); \
|
|
|
@@ -519,7 +519,7 @@ LOAD_PTR(void *addr)
|
|
|
addr = POP_I32(); \
|
|
|
\
|
|
|
if (opcode == WASM_OP_ATOMIC_RMW_I64_##OP_NAME##8_U) { \
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr); \
|
|
|
+ CHECK_MEMORY_OVERFLOW(1); \
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(1); \
|
|
|
\
|
|
|
shared_memory_lock(memory); \
|
|
|
@@ -528,7 +528,7 @@ LOAD_PTR(void *addr)
|
|
|
shared_memory_unlock(memory); \
|
|
|
} \
|
|
|
else if (opcode == WASM_OP_ATOMIC_RMW_I64_##OP_NAME##16_U) { \
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr); \
|
|
|
+ CHECK_MEMORY_OVERFLOW(2); \
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(2); \
|
|
|
\
|
|
|
shared_memory_lock(memory); \
|
|
|
@@ -537,7 +537,7 @@ LOAD_PTR(void *addr)
|
|
|
shared_memory_unlock(memory); \
|
|
|
} \
|
|
|
else if (opcode == WASM_OP_ATOMIC_RMW_I64_##OP_NAME##32_U) { \
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr); \
|
|
|
+ CHECK_MEMORY_OVERFLOW(4); \
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4); \
|
|
|
\
|
|
|
shared_memory_lock(memory); \
|
|
|
@@ -547,7 +547,7 @@ LOAD_PTR(void *addr)
|
|
|
} \
|
|
|
else { \
|
|
|
uint64 op_result; \
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 8, maddr); \
|
|
|
+ CHECK_MEMORY_OVERFLOW(8); \
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(8); \
|
|
|
\
|
|
|
shared_memory_lock(memory); \
|
|
|
@@ -2881,8 +2881,8 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
{
|
|
|
addr1 = GET_OFFSET();
|
|
|
addr2 = GET_OFFSET();
|
|
|
- frame_lp[addr2] = frame_lp[addr1];
|
|
|
- frame_lp[addr2 + 1] = frame_lp[addr1 + 1];
|
|
|
+ PUT_I64_TO_ADDR(frame_lp + addr2,
|
|
|
+ GET_I64_FROM_ADDR(frame_lp + addr1));
|
|
|
HANDLE_OP_END();
|
|
|
}
|
|
|
|
|
|
@@ -3017,7 +3017,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
offset = (uint64)(uint32)POP_I32();
|
|
|
addr = POP_I32();
|
|
|
|
|
|
-#if WASM_ENABLE_THREAD_MGR
|
|
|
+#if WASM_ENABLE_THREAD_MGR != 0
|
|
|
linear_mem_size = get_linear_mem_size();
|
|
|
#endif
|
|
|
|
|
|
@@ -3065,7 +3065,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
src = POP_I32();
|
|
|
dst = POP_I32();
|
|
|
|
|
|
-#if WASM_ENABLE_THREAD_MGR
|
|
|
+#if WASM_ENABLE_THREAD_MGR != 0
|
|
|
linear_mem_size = get_linear_mem_size();
|
|
|
#endif
|
|
|
|
|
|
@@ -3095,7 +3095,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
fill_val = POP_I32();
|
|
|
dst = POP_I32();
|
|
|
|
|
|
-#if WASM_ENABLE_THREAD_MGR
|
|
|
+#if WASM_ENABLE_THREAD_MGR != 0
|
|
|
linear_mem_size = get_linear_mem_size();
|
|
|
#endif
|
|
|
|
|
|
@@ -3303,7 +3303,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
|
|
|
notify_count = POP_I32();
|
|
|
addr = POP_I32();
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(4);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4);
|
|
|
|
|
|
ret = wasm_runtime_atomic_notify(
|
|
|
@@ -3323,7 +3323,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
timeout = POP_I64();
|
|
|
expect = POP_I32();
|
|
|
addr = POP_I32();
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(4);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4);
|
|
|
|
|
|
ret = wasm_runtime_atomic_wait(
|
|
|
@@ -3347,7 +3347,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
timeout = POP_I64();
|
|
|
expect = POP_I64();
|
|
|
addr = POP_I32();
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 8, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(8);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(8);
|
|
|
|
|
|
ret = wasm_runtime_atomic_wait(
|
|
|
@@ -3378,21 +3378,21 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
addr = POP_I32();
|
|
|
|
|
|
if (opcode == WASM_OP_ATOMIC_I32_LOAD8_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(1);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(1);
|
|
|
shared_memory_lock(memory);
|
|
|
readv = (uint32)(*(uint8 *)maddr);
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else if (opcode == WASM_OP_ATOMIC_I32_LOAD16_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(2);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(2);
|
|
|
shared_memory_lock(memory);
|
|
|
readv = (uint32)LOAD_U16(maddr);
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(4);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4);
|
|
|
shared_memory_lock(memory);
|
|
|
readv = LOAD_I32(maddr);
|
|
|
@@ -3413,28 +3413,28 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
addr = POP_I32();
|
|
|
|
|
|
if (opcode == WASM_OP_ATOMIC_I64_LOAD8_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(1);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(1);
|
|
|
shared_memory_lock(memory);
|
|
|
readv = (uint64)(*(uint8 *)maddr);
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else if (opcode == WASM_OP_ATOMIC_I64_LOAD16_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(2);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(2);
|
|
|
shared_memory_lock(memory);
|
|
|
readv = (uint64)LOAD_U16(maddr);
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else if (opcode == WASM_OP_ATOMIC_I64_LOAD32_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(4);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4);
|
|
|
shared_memory_lock(memory);
|
|
|
readv = (uint64)LOAD_U32(maddr);
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 8, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(8);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(8);
|
|
|
shared_memory_lock(memory);
|
|
|
readv = LOAD_I64(maddr);
|
|
|
@@ -3454,21 +3454,21 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
addr = POP_I32();
|
|
|
|
|
|
if (opcode == WASM_OP_ATOMIC_I32_STORE8) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(1);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(1);
|
|
|
shared_memory_lock(memory);
|
|
|
*(uint8 *)maddr = (uint8)sval;
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else if (opcode == WASM_OP_ATOMIC_I32_STORE16) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(2);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(2);
|
|
|
shared_memory_lock(memory);
|
|
|
STORE_U16(maddr, (uint16)sval);
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(4);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4);
|
|
|
shared_memory_lock(memory);
|
|
|
STORE_U32(maddr, sval);
|
|
|
@@ -3488,28 +3488,28 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
addr = POP_I32();
|
|
|
|
|
|
if (opcode == WASM_OP_ATOMIC_I64_STORE8) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(1);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(1);
|
|
|
shared_memory_lock(memory);
|
|
|
*(uint8 *)maddr = (uint8)sval;
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else if (opcode == WASM_OP_ATOMIC_I64_STORE16) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(2);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(2);
|
|
|
shared_memory_lock(memory);
|
|
|
STORE_U16(maddr, (uint16)sval);
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else if (opcode == WASM_OP_ATOMIC_I64_STORE32) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(4);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4);
|
|
|
shared_memory_lock(memory);
|
|
|
STORE_U32(maddr, (uint32)sval);
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 8, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(8);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(8);
|
|
|
shared_memory_lock(memory);
|
|
|
STORE_I64(maddr, sval);
|
|
|
@@ -3529,7 +3529,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
addr = POP_I32();
|
|
|
|
|
|
if (opcode == WASM_OP_ATOMIC_RMW_I32_CMPXCHG8_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(1);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(1);
|
|
|
|
|
|
expect = (uint8)expect;
|
|
|
@@ -3540,7 +3540,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else if (opcode == WASM_OP_ATOMIC_RMW_I32_CMPXCHG16_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(2);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(2);
|
|
|
|
|
|
expect = (uint16)expect;
|
|
|
@@ -3551,7 +3551,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(4);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4);
|
|
|
|
|
|
shared_memory_lock(memory);
|
|
|
@@ -3575,7 +3575,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
addr = POP_I32();
|
|
|
|
|
|
if (opcode == WASM_OP_ATOMIC_RMW_I64_CMPXCHG8_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(1);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(1);
|
|
|
|
|
|
expect = (uint8)expect;
|
|
|
@@ -3586,7 +3586,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else if (opcode == WASM_OP_ATOMIC_RMW_I64_CMPXCHG16_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(2);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(2);
|
|
|
|
|
|
expect = (uint16)expect;
|
|
|
@@ -3597,7 +3597,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else if (opcode == WASM_OP_ATOMIC_RMW_I64_CMPXCHG32_U) {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(4);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(4);
|
|
|
|
|
|
expect = (uint32)expect;
|
|
|
@@ -3608,7 +3608,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
|
|
|
shared_memory_unlock(memory);
|
|
|
}
|
|
|
else {
|
|
|
- CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 8, maddr);
|
|
|
+ CHECK_MEMORY_OVERFLOW(8);
|
|
|
CHECK_ATOMIC_MEMORY_ACCESS(8);
|
|
|
|
|
|
shared_memory_lock(memory);
|