asyncio: trap on unexpected resume
This commit is contained in:
12
ssa/eh.go
12
ssa/eh.go
@@ -55,6 +55,13 @@ func (p Program) tySiglongjmp() *types.Signature {
|
||||
return p.sigljmpTy
|
||||
}
|
||||
|
||||
func (p Program) tyLLVMTrap() *types.Signature {
|
||||
if p.llvmTrapTy == nil {
|
||||
p.llvmTrapTy = types.NewSignatureType(nil, nil, nil, nil, nil, false)
|
||||
}
|
||||
return p.llvmTrapTy
|
||||
}
|
||||
|
||||
func (b Builder) AllocaSigjmpBuf() Expr {
|
||||
prog := b.Prog
|
||||
n := unsafe.Sizeof(sigjmpbuf{})
|
||||
@@ -77,6 +84,11 @@ func (b Builder) Siglongjmp(jb, retval Expr) {
|
||||
// b.Unreachable()
|
||||
}
|
||||
|
||||
func (b Builder) LLVMTrap() {
|
||||
fn := b.Pkg.cFunc("llvm.trap", b.Prog.tyLLVMTrap())
|
||||
b.Call(fn)
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------------
|
||||
|
||||
const (
|
||||
|
||||
Reference in New Issue
Block a user