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

Method checkStop

lib/llvm/compiler.cpp:5691–5708  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5689 }
5690
5691 void checkStop() noexcept {
5692 if (!Interruptible) {
5693 return;
5694 }
5695 auto NotStopBB = LLVM::BasicBlock::create(LLContext, F.Fn, "NotStop");
5696 auto StopToken = Builder.createAtomicRMW(
5697 LLVMAtomicRMWBinOpXchg, Context.getStopToken(Builder, ExecCtx),
5698 LLContext.getInt32(0), LLVMAtomicOrderingMonotonic);
5699#if LLVM_VERSION_MAJOR >= 13
5700 StopToken.setAlignment(32);
5701#endif
5702 auto NotStop = Builder.createLikely(
5703 Builder.createICmpEQ(StopToken, LLContext.getInt32(0)));
5704 Builder.createCondBr(NotStop, NotStopBB,
5705 getTrapBB(ErrCode::Value::Interrupted));
5706
5707 Builder.positionAtEnd(NotStopBB);
5708 }
5709
5710 void setUnreachable() noexcept {
5711 if (ControlStack.empty()) {

Callers

nothing calls this directly

Calls 9

createAtomicRMWMethod · 0.80
getStopTokenMethod · 0.80
getInt32Method · 0.80
setAlignmentMethod · 0.80
createLikelyMethod · 0.80
createICmpEQMethod · 0.80
createCondBrMethod · 0.80
positionAtEndMethod · 0.80
createFunction · 0.50

Tested by

no test coverage detected