diff options
| author | Cherry Mui <cherryyz@google.com> | 2021-06-04 13:53:18 -0400 |
|---|---|---|
| committer | Cherry Mui <cherryyz@google.com> | 2021-06-08 17:03:39 +0000 |
| commit | a9de78ac88ff668bbe8c0dc5fdc9dc864ae60447 (patch) | |
| tree | e6bd20b2e564e70c12e9c8785b7773ea85c9a828 /src/runtime/panic.go | |
| parent | e58bddde706c8814f82ec4ef404fc7ff36d88469 (diff) | |
| download | go-a9de78ac88ff668bbe8c0dc5fdc9dc864ae60447.tar.xz | |
[dev.typeparams] cmd/compile, runtime: always enable defer/go wrapping
Hardwire regabidefers to true. Remove it from GOEXPERIMENTs.
Fallback paths are not cleaned up in this CL. That will be done
in later CLs.
Change-Id: Iec1112a1e55d5f6ef70232a5ff6e702f649071c4
Reviewed-on: https://go-review.googlesource.com/c/go/+/325913
Trust: Cherry Mui <cherryyz@google.com>
Run-TryBot: Cherry Mui <cherryyz@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Michael Knyszek <mknyszek@google.com>
Reviewed-by: Than McIntosh <thanm@google.com>
Diffstat (limited to 'src/runtime/panic.go')
| -rw-r--r-- | src/runtime/panic.go | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/runtime/panic.go b/src/runtime/panic.go index f6c38aafcc..e73d59c136 100644 --- a/src/runtime/panic.go +++ b/src/runtime/panic.go @@ -6,7 +6,6 @@ package runtime import ( "internal/abi" - "internal/goexperiment" "runtime/internal/atomic" "runtime/internal/sys" "unsafe" @@ -236,7 +235,7 @@ func deferproc(siz int32, fn *funcval) { // arguments of fn follow fn throw("defer on system stack") } - if goexperiment.RegabiDefer && siz != 0 { + if true && siz != 0 { // TODO: Make deferproc just take a func(). throw("defer with non-empty frame") } @@ -293,7 +292,7 @@ func deferprocStack(d *_defer) { // go code on the system stack can't defer throw("defer on system stack") } - if goexperiment.RegabiDefer && d.siz != 0 { + if true && d.siz != 0 { throw("defer with non-empty frame") } // siz and fn are already set. @@ -395,7 +394,7 @@ func deferArgs(d *_defer) unsafe.Pointer { // that experiment, we should change the type of d.fn. //go:nosplit func deferFunc(d *_defer) func() { - if !goexperiment.RegabiDefer { + if false { throw("requires GOEXPERIMENT=regabidefer") } var fn func() @@ -655,7 +654,7 @@ func Goexit() { addOneOpenDeferFrame(gp, 0, nil) } } else { - if goexperiment.RegabiDefer { + if true { // Save the pc/sp in deferCallSave(), so we can "recover" back to this // loop if necessary. deferCallSave(&p, deferFunc(d)) @@ -857,7 +856,7 @@ func runOpenDeferFrame(gp *g, d *_defer) bool { argWidth, fd = readvarintUnsafe(fd) closureOffset, fd = readvarintUnsafe(fd) nArgs, fd = readvarintUnsafe(fd) - if goexperiment.RegabiDefer && argWidth != 0 { + if true && argWidth != 0 { throw("defer with non-empty frame") } if deferBits&(1<<i) == 0 { @@ -885,7 +884,7 @@ func runOpenDeferFrame(gp *g, d *_defer) bool { deferBits = deferBits &^ (1 << i) *(*uint8)(unsafe.Pointer(d.varp - uintptr(deferBitsOffset))) = deferBits p := d._panic - if goexperiment.RegabiDefer { + if true { deferCallSave(p, deferFunc(d)) } else { reflectcallSave(p, unsafe.Pointer(closure), deferArgs, argWidth) @@ -913,7 +912,7 @@ func runOpenDeferFrame(gp *g, d *_defer) bool { // This is marked as a wrapper by the compiler so it doesn't appear in // tracebacks. func reflectcallSave(p *_panic, fn, arg unsafe.Pointer, argsize uint32) { - if goexperiment.RegabiDefer { + if true { throw("not allowed with GOEXPERIMENT=regabidefer") } if p != nil { @@ -939,7 +938,7 @@ func reflectcallSave(p *_panic, fn, arg unsafe.Pointer, argsize uint32) { // This is marked as a wrapper by the compiler so it doesn't appear in // tracebacks. func deferCallSave(p *_panic, fn func()) { - if !goexperiment.RegabiDefer { + if false { throw("only allowed with GOEXPERIMENT=regabidefer") } if p != nil { @@ -1042,7 +1041,7 @@ func gopanic(e interface{}) { } else { p.argp = unsafe.Pointer(getargp()) - if goexperiment.RegabiDefer { + if true { fn := deferFunc(d) fn() } else { |
