diff options
| author | Russ Cox <rsc@golang.org> | 2014-09-03 11:35:22 -0400 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2014-09-03 11:35:22 -0400 |
| commit | 012ceed914a24470207d602deeda3d6642787b4c (patch) | |
| tree | 19df2c9f42be35852034d67b010d98ca923d9123 /src/pkg/runtime/panic.c | |
| parent | 7ba41e99728d9a4545361ddfd834a473b424bbb6 (diff) | |
| download | go-012ceed914a24470207d602deeda3d6642787b4c.tar.xz | |
runtime: make onM and mcall take Go func values
This gives them correct types in Go and also makes it
possible to use them to run Go code on an m stack.
LGTM=iant
R=golang-codereviews, dave, iant
CC=dvyukov, golang-codereviews, khr, r
https://golang.org/cl/137970044
Diffstat (limited to 'src/pkg/runtime/panic.c')
| -rw-r--r-- | src/pkg/runtime/panic.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/pkg/runtime/panic.c b/src/pkg/runtime/panic.c index ecf4111337..4b6829e011 100644 --- a/src/pkg/runtime/panic.c +++ b/src/pkg/runtime/panic.c @@ -214,6 +214,7 @@ runtime·panic(Eface e) Defer *d, dabort; Panic p; uintptr pc, argp; + void (*fn)(G*); runtime·memclr((byte*)&p, sizeof p); p.arg = e; @@ -266,7 +267,8 @@ runtime·panic(Eface e) // Pass information about recovering frame to recovery. g->sigcode0 = (uintptr)argp; g->sigcode1 = (uintptr)pc; - runtime·mcall(recovery); + fn = recovery; + runtime·mcall(&fn); runtime·throw("recovery failed"); // mcall should not return } } |
