aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/panic.go
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2017-10-22 18:10:08 -0400
committerAustin Clements <austin@google.com>2017-10-29 17:56:14 +0000
commit070cc8eb02248698480957dd7cd6ada07de309de (patch)
tree4a49b5cf004b1c82fa29ce29a3d89ff053a7aad2 /src/runtime/panic.go
parent249b5cc9452534d677499c7017b1081533ba56fe (diff)
downloadgo-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.go6
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