aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/runtime2.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/runtime2.go')
-rw-r--r--src/runtime/runtime2.go13
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