ssa: panicBlk use IndirectJump
This commit is contained in:
@@ -255,6 +255,7 @@ func (p Function) endDefer(b Builder) {
|
|||||||
}
|
}
|
||||||
procBlk := self.procBlk
|
procBlk := self.procBlk
|
||||||
panicBlk := self.panicBlk
|
panicBlk := self.panicBlk
|
||||||
|
rethPtr := self.rethPtr
|
||||||
rundPtr := self.rundPtr
|
rundPtr := self.rundPtr
|
||||||
nexts := self.rundsNext
|
nexts := self.rundsNext
|
||||||
if len(nexts) == 0 {
|
if len(nexts) == 0 {
|
||||||
@@ -273,7 +274,7 @@ func (p Function) endDefer(b Builder) {
|
|||||||
|
|
||||||
b.SetBlockEx(panicBlk, AtEnd, false) // exec runDefers and rethrow
|
b.SetBlockEx(panicBlk, AtEnd, false) // exec runDefers and rethrow
|
||||||
b.Store(rundPtr, nexts[0].Addr()) // nexts[0] is rethrowBlk
|
b.Store(rundPtr, nexts[0].Addr()) // nexts[0] is rethrowBlk
|
||||||
b.Jump(procBlk)
|
b.IndirectJump(b.Load(rethPtr), self.rethsNext)
|
||||||
}
|
}
|
||||||
|
|
||||||
// -----------------------------------------------------------------------------
|
// -----------------------------------------------------------------------------
|
||||||
|
|||||||
Reference in New Issue
Block a user