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/export_test.go | |
| 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/export_test.go')
| -rw-r--r-- | src/pkg/runtime/export_test.go | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/src/pkg/runtime/export_test.go b/src/pkg/runtime/export_test.go index cce9afbef9..35a4130ee1 100644 --- a/src/pkg/runtime/export_test.go +++ b/src/pkg/runtime/export_test.go @@ -31,23 +31,21 @@ type LFNode struct { Pushcnt uintptr } -var ( - lfstackpush_m, - lfstackpop_m mFunction -) +func lfstackpush_m() +func lfstackpop_m() func LFStackPush(head *uint64, node *LFNode) { mp := acquirem() mp.ptrarg[0] = unsafe.Pointer(head) mp.ptrarg[1] = unsafe.Pointer(node) - onM(&lfstackpush_m) + onM(lfstackpush_m) releasem(mp) } func LFStackPop(head *uint64) *LFNode { mp := acquirem() mp.ptrarg[0] = unsafe.Pointer(head) - onM(&lfstackpop_m) + onM(lfstackpop_m) node := (*LFNode)(unsafe.Pointer(mp.ptrarg[0])) mp.ptrarg[0] = nil releasem(mp) @@ -65,17 +63,15 @@ type ParFor struct { wait bool } -var ( - newparfor_m, - parforsetup_m, - parfordo_m, - parforiters_m mFunction -) +func newparfor_m() +func parforsetup_m() +func parfordo_m() +func parforiters_m() func NewParFor(nthrmax uint32) *ParFor { mp := acquirem() mp.scalararg[0] = uintptr(nthrmax) - onM(&newparfor_m) + onM(newparfor_m) desc := (*ParFor)(mp.ptrarg[0]) mp.ptrarg[0] = nil releasem(mp) @@ -93,14 +89,14 @@ func ParForSetup(desc *ParFor, nthr, n uint32, ctx *byte, wait bool, body func(* if wait { mp.scalararg[2] = 1 } - onM(&parforsetup_m) + onM(parforsetup_m) releasem(mp) } func ParForDo(desc *ParFor) { mp := acquirem() mp.ptrarg[0] = unsafe.Pointer(desc) - onM(&parfordo_m) + onM(parfordo_m) releasem(mp) } @@ -108,7 +104,7 @@ func ParForIters(desc *ParFor, tid uint32) (uint32, uint32) { mp := acquirem() mp.ptrarg[0] = unsafe.Pointer(desc) mp.scalararg[0] = uintptr(tid) - onM(&parforiters_m) + onM(parforiters_m) begin := uint32(mp.scalararg[0]) end := uint32(mp.scalararg[1]) releasem(mp) |
