From: Russ Cox Date: Wed, 8 Oct 2014 03:39:00 +0000 (-0400) Subject: runtime: fix windows/amd64 build X-Git-Tag: go1.4beta1~161 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=f950a14bb555938cd3878dd59cc447026e1108b9;p=gostls13.git runtime: fix windows/amd64 build Out of stack space due to new 2-word call in freedefer. Go back to smaller function calls. TBR=brainman CC=golang-codereviews https://golang.org/cl/152340043 --- diff --git a/src/runtime/panic.go b/src/runtime/panic.go index c78102f8a3..58b14b09e3 100644 --- a/src/runtime/panic.go +++ b/src/runtime/panic.go @@ -189,8 +189,7 @@ func newdefer(siz int32) *_defer { //go:nosplit func freedefer(d *_defer) { if d._panic != nil { - // _panic must be cleared before d is unlinked from gp. - gothrow("freedefer with d._panic != nil") + freedeferpanic() } sc := deferclass(uintptr(d.siz)) if sc < uintptr(len(p{}.deferpool)) { @@ -203,6 +202,13 @@ func freedefer(d *_defer) { } } +// Separate function so that it can split stack. +// Windows otherwise runs out of stack space. +func freedeferpanic() { + // _panic must be cleared before d is unlinked from gp. + gothrow("freedefer with d._panic != nil") +} + // Run a deferred function if there is one. // The compiler inserts a call to this at the end of any // function which calls defer.