Skip to content

Commit 9d2576d

Browse files
authored
Wrap data width according to atomic opcode specified (#936)
Wrap data width according to atomic opcode specified Signed-off-by: Huang Qi <[email protected]>
1 parent ff997c2 commit 9d2576d

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

core/iwasm/interpreter/wasm_interp_classic.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3389,6 +3389,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
33893389
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
33903390
CHECK_ATOMIC_MEMORY_ACCESS();
33913391

3392+
expect = (uint8)expect;
33923393
os_mutex_lock(&memory->mem_lock);
33933394
readv = (uint32)(*(uint8 *)maddr);
33943395
if (readv == expect)
@@ -3399,6 +3400,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
33993400
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
34003401
CHECK_ATOMIC_MEMORY_ACCESS();
34013402

3403+
expect = (uint16)expect;
34023404
os_mutex_lock(&memory->mem_lock);
34033405
readv = (uint32)LOAD_U16(maddr);
34043406
if (readv == expect)
@@ -3433,6 +3435,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
34333435
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
34343436
CHECK_ATOMIC_MEMORY_ACCESS();
34353437

3438+
expect = (uint8)expect;
34363439
os_mutex_lock(&memory->mem_lock);
34373440
readv = (uint64)(*(uint8 *)maddr);
34383441
if (readv == expect)
@@ -3443,6 +3446,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
34433446
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
34443447
CHECK_ATOMIC_MEMORY_ACCESS();
34453448

3449+
expect = (uint16)expect;
34463450
os_mutex_lock(&memory->mem_lock);
34473451
readv = (uint64)LOAD_U16(maddr);
34483452
if (readv == expect)
@@ -3453,6 +3457,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
34533457
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
34543458
CHECK_ATOMIC_MEMORY_ACCESS();
34553459

3460+
expect = (uint32)expect;
34563461
os_mutex_lock(&memory->mem_lock);
34573462
readv = (uint64)LOAD_U32(maddr);
34583463
if (readv == expect)

core/iwasm/interpreter/wasm_interp_fast.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3308,6 +3308,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
33083308
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
33093309
CHECK_ATOMIC_MEMORY_ACCESS(1);
33103310

3311+
expect = (uint8)expect;
33113312
os_mutex_lock(&memory->mem_lock);
33123313
readv = (uint32)(*(uint8 *)maddr);
33133314
if (readv == expect)
@@ -3318,6 +3319,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
33183319
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
33193320
CHECK_ATOMIC_MEMORY_ACCESS(2);
33203321

3322+
expect = (uint16)expect;
33213323
os_mutex_lock(&memory->mem_lock);
33223324
readv = (uint32)LOAD_U16(maddr);
33233325
if (readv == expect)
@@ -3352,6 +3354,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
33523354
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 1, maddr);
33533355
CHECK_ATOMIC_MEMORY_ACCESS(1);
33543356

3357+
expect = (uint8)expect;
33553358
os_mutex_lock(&memory->mem_lock);
33563359
readv = (uint64)(*(uint8 *)maddr);
33573360
if (readv == expect)
@@ -3362,6 +3365,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
33623365
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 2, maddr);
33633366
CHECK_ATOMIC_MEMORY_ACCESS(2);
33643367

3368+
expect = (uint16)expect;
33653369
os_mutex_lock(&memory->mem_lock);
33663370
readv = (uint64)LOAD_U16(maddr);
33673371
if (readv == expect)
@@ -3372,6 +3376,7 @@ wasm_interp_call_func_bytecode(WASMModuleInstance *module,
33723376
CHECK_BULK_MEMORY_OVERFLOW(addr + offset, 4, maddr);
33733377
CHECK_ATOMIC_MEMORY_ACCESS(4);
33743378

3379+
expect = (uint32)expect;
33753380
os_mutex_lock(&memory->mem_lock);
33763381
readv = (uint64)LOAD_U32(maddr);
33773382
if (readv == expect)

0 commit comments

Comments
 (0)