|
|
@@ -606,7 +606,7 @@ wasm_interp_get_frame_ref(WASMInterpFrame *frame)
|
|
|
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); \
|
|
|
@@ -615,7 +615,7 @@ wasm_interp_get_frame_ref(WASMInterpFrame *frame)
|
|
|
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); \
|
|
|
@@ -624,7 +624,7 @@ wasm_interp_get_frame_ref(WASMInterpFrame *frame)
|
|
|
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); \
|
|
|
@@ -646,7 +646,7 @@ wasm_interp_get_frame_ref(WASMInterpFrame *frame)
|
|
|
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); \
|
|
|
@@ -655,7 +655,7 @@ wasm_interp_get_frame_ref(WASMInterpFrame *frame)
|
|
|
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); \
|
|
|
@@ -664,7 +664,7 @@ wasm_interp_get_frame_ref(WASMInterpFrame *frame)
|
|
|
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); \
|
|
|
@@ -674,7 +674,7 @@ wasm_interp_get_frame_ref(WASMInterpFrame *frame)
|
|
|
} \
|
|
|
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); \
|
|
|
@@ -4960,7 +4960,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
|
|
|
|
|
|
@@ -5008,7 +5008,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
|
|
|
|
|
|
@@ -5038,7 +5038,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
|
|
|
|
|
|
@@ -5283,7 +5283,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(
|
|
|
@@ -5303,7 +5303,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(
|
|
|
@@ -5327,7 +5327,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(
|
|
|
@@ -5358,21 +5358,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);
|
|
|
@@ -5393,28 +5393,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);
|
|
|
@@ -5434,21 +5434,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);
|
|
|
@@ -5468,28 +5468,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);
|
|
|
@@ -5509,7 +5509,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;
|
|
|
@@ -5520,7 +5520,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;
|
|
|
@@ -5531,7 +5531,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);
|
|
|
@@ -5555,7 +5555,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;
|
|
|
@@ -5566,7 +5566,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;
|
|
|
@@ -5577,7 +5577,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;
|
|
|
@@ -5588,7 +5588,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);
|