| 283 | } |
| 284 | |
| 285 | Expect<void> Executor::runArrayInitDataOp( |
| 286 | Runtime::StackManager &StackMgr, const uint32_t Cnt, const uint32_t TypeIdx, |
| 287 | const uint32_t DataIdx, const AST::Instruction &Instr) const noexcept { |
| 288 | const uint32_t SrcIdx = StackMgr.pop().get<uint32_t>(); |
| 289 | const uint32_t DstIdx = StackMgr.pop().get<uint32_t>(); |
| 290 | const RefVariant Ref = StackMgr.pop().get<RefVariant>(); |
| 291 | EXPECTED_TRY( |
| 292 | arrayInitData(StackMgr, Ref, TypeIdx, DataIdx, DstIdx, SrcIdx, Cnt) |
| 293 | .map_error([&](auto E) { |
| 294 | auto *DataInst = getDataInstByIdx(StackMgr, DataIdx); |
| 295 | const uint32_t BSize = |
| 296 | getArrayStorageTypeByIdx(StackMgr, TypeIdx).getBitWidth() / 8; |
| 297 | return logError( |
| 298 | E, Instr, [&]() { return logArrayOOB(E, DstIdx, Cnt, Ref); }, |
| 299 | [&]() { |
| 300 | return logMemoryOOB(E, *DataInst, SrcIdx, Cnt * BSize); |
| 301 | }); |
| 302 | })); |
| 303 | return {}; |
| 304 | } |
| 305 | |
| 306 | Expect<void> Executor::runArrayInitElemOp( |
| 307 | Runtime::StackManager &StackMgr, const uint32_t Cnt, const uint32_t TypeIdx, |
nothing calls this directly
no test coverage detected