-a81079a81b63714221674f07d13bedc768092f27
+a459f1fdfe0bd365bf2def730e1529052c6487fd
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
// pfn is a C function pointer.
// arg is a value to pass to pfn.
func deferproc(frame *bool, pfn uintptr, arg unsafe.Pointer) {
- n := newdefer()
- n.frame = frame
- n._panic = getg()._panic
- n.pfn = pfn
- n.arg = arg
- n.retaddr = 0
- n.makefunccanrecover = false
+ d := newdefer()
+ d.frame = frame
+ d.panicStack = getg()._panic
+ d.pfn = pfn
+ d.arg = arg
+ d.retaddr = 0
+ d.makefunccanrecover = false
}
// Allocate a Defer, usually using per-P pool.
// the panic stack. We do not want to recover it if that panic
// was on the top of the panic stack when this function was
// deferred.
- if d._panic == gp._panic {
+ if d.panicStack == gp._panic {
return nil
}
// function like recover.
func deferredrecover() interface{} {
gp := getg()
- if gp._defer == nil || gp._defer._panic != gp._panic {
+ if gp._defer == nil || gp._defer.panicStack != gp._panic {
return nil
}
return gorecover()
// deferred. This function can not recover this value from
// the panic stack. This can happen if a deferred function
// has a defer statement itself.
- _panic *_panic
+ panicStack *_panic
// The function to call.
pfn uintptr