diff options
Diffstat (limited to 'src/runtime/runtime2.go')
| -rw-r--r-- | src/runtime/runtime2.go | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go index 1e2de52989..b5d2dcefad 100644 --- a/src/runtime/runtime2.go +++ b/src/runtime/runtime2.go @@ -597,9 +597,7 @@ type m struct { freelink *m // on sched.freem trace mTraceState - // these are here because they are too large to be on the stack - // of low-level NOSPLIT functions. - libcall libcall + // These are here to avoid using the G stack so the stack can move during the call. libcallpc uintptr // for cpu profiler libcallsp uintptr libcallg guintptr @@ -1009,14 +1007,13 @@ type _defer struct { // // A _panic value must only ever live on the stack. // -// The argp and link fields are stack pointers, but don't need special +// The gopanicFP and link fields are stack pointers, but don't need special // handling during stack growth: because they are pointer-typed and // _panic values only live on the stack, regular stack pointer // adjustment takes care of them. type _panic struct { - argp unsafe.Pointer // pointer to arguments of deferred call run during panic; cannot move - known to liblink - arg any // argument to panic - link *_panic // link to earlier panic + arg any // argument to panic + link *_panic // link to earlier panic // startPC and startSP track where _panic.start was called. startPC uintptr @@ -1039,6 +1036,8 @@ type _panic struct { repanicked bool // whether this panic repanicked goexit bool deferreturn bool + + gopanicFP unsafe.Pointer // frame pointer of the gopanic frame } // savedOpenDeferState tracks the extra state from _panic that's |
