]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix windows/amd64 build
authorRuss Cox <rsc@golang.org>
Wed, 8 Oct 2014 03:39:00 +0000 (23:39 -0400)
committerRuss Cox <rsc@golang.org>
Wed, 8 Oct 2014 03:39:00 +0000 (23:39 -0400)
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

src/runtime/panic.go

index c78102f8a30ffb43858ee802afadbcf994160f57..58b14b09e38cd96732e332753df24de88378a0c2 100644 (file)
@@ -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.