MCPcopy Create free account
hub / github.com/WasmEdge/WasmEdge / runArrayNewDataOp

Method runArrayNewDataOp

lib/executor/engine/refInstr.cpp:171–190  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

169}
170
171Expect<void>
172Executor::runArrayNewDataOp(Runtime::StackManager &StackMgr,
173 const uint32_t TypeIdx, const uint32_t DataIdx,
174 const AST::Instruction &Instr) const noexcept {
175 const uint32_t Length = StackMgr.pop().get<uint32_t>();
176 const uint32_t Start = StackMgr.getTop().get<uint32_t>();
177 EXPECTED_TRY(
178 auto InstRef,
179 arrayNewData(StackMgr, TypeIdx, DataIdx, Start, Length)
180 .map_error([&](auto E) {
181 auto *DataInst = getDataInstByIdx(StackMgr, DataIdx);
182 const uint32_t BSize =
183 getArrayStorageTypeByIdx(StackMgr, TypeIdx).getBitWidth() / 8;
184 return logError(E, Instr, [&]() {
185 return logMemoryOOB(E, *DataInst, Start, BSize * Length);
186 });
187 }));
188 StackMgr.getTop().emplace<RefVariant>(InstRef);
189 return {};
190}
191
192Expect<void>
193Executor::runArrayNewElemOp(Runtime::StackManager &StackMgr,

Callers

nothing calls this directly

Calls 1

popMethod · 0.80

Tested by

no test coverage detected