| 153 | } |
| 154 | |
| 155 | Expect<void> Executor::runArrayNewOp(Runtime::StackManager &StackMgr, |
| 156 | const uint32_t TypeIdx, |
| 157 | const uint32_t InitCnt, |
| 158 | uint32_t Length) const noexcept { |
| 159 | assuming(InitCnt == 0 || InitCnt == 1 || InitCnt == Length); |
| 160 | if (InitCnt == 0) { |
| 161 | StackMgr.push(*arrayNew(StackMgr, TypeIdx, Length)); |
| 162 | } else if (InitCnt == 1) { |
| 163 | StackMgr.getTop().emplace<RefVariant>( |
| 164 | *arrayNew(StackMgr, TypeIdx, Length, {StackMgr.getTop()})); |
| 165 | } else { |
| 166 | StackMgr.push(*arrayNew(StackMgr, TypeIdx, Length, StackMgr.pop(Length))); |
| 167 | } |
| 168 | return {}; |
| 169 | } |
| 170 | |
| 171 | Expect<void> |
| 172 | Executor::runArrayNewDataOp(Runtime::StackManager &StackMgr, |