diff options
| author | Austin Clements <austin@google.com> | 2017-10-22 18:10:08 -0400 |
|---|---|---|
| committer | Austin Clements <austin@google.com> | 2017-10-29 17:56:14 +0000 |
| commit | 070cc8eb02248698480957dd7cd6ada07de309de (patch) | |
| tree | 4a49b5cf004b1c82fa29ce29a3d89ff053a7aad2 /src/runtime/panic.go | |
| parent | 249b5cc9452534d677499c7017b1081533ba56fe (diff) | |
| download | go-070cc8eb02248698480957dd7cd6ada07de309de.tar.xz | |
runtime: allow write barriers in startpanic_m
We're about to start tracking nowritebarrierrec through systemstack
calls, which will reveal write barriers in startpanic_m prohibited by
various callers.
We actually can allow write barriers here because the write barrier is
a no-op when we're panicking. Let the compiler know.
Updates #22384.
For #22460.
Change-Id: Ifb3a38d3dd9a4125c278c3680f8648f987a5b0b8
Reviewed-on: https://go-review.googlesource.com/72770
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Rick Hudson <rlh@golang.org>
Diffstat (limited to 'src/runtime/panic.go')
| -rw-r--r-- | src/runtime/panic.go | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/runtime/panic.go b/src/runtime/panic.go index 90a1c0bdd1..11cb05e976 100644 --- a/src/runtime/panic.go +++ b/src/runtime/panic.go @@ -654,6 +654,12 @@ func recovery(gp *g) { gogo(&gp.sched) } +// startpanic_m implements unrecoverable panic. +// +// It can have write barriers because the write barrier explicitly +// ignores writes once dying > 0. +// +//go:yeswritebarrierrec func startpanic_m() { _g_ := getg() if mheap_.cachealloc.size == 0 { // very early |
