diff options
| author | Keith Randall <khr@golang.org> | 2014-09-05 14:59:31 -0700 |
|---|---|---|
| committer | Keith Randall <khr@golang.org> | 2014-09-05 14:59:31 -0700 |
| commit | 005806cab17a20adaec33a1ee02a19355356fa67 (patch) | |
| tree | 4014435f7f4d23618b0aefdf1874d04c9a767011 /src/pkg/runtime/export_test.go | |
| parent | 277ef8fa07411231761426298c8e489ddef8ef67 (diff) | |
| download | go-005806cab17a20adaec33a1ee02a19355356fa67.tar.xz | |
runtime: run getgcmask on the M stack.
LGTM=rsc
R=rsc, khr
CC=golang-codereviews
https://golang.org/cl/132660043
Diffstat (limited to 'src/pkg/runtime/export_test.go')
| -rw-r--r-- | src/pkg/runtime/export_test.go | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/pkg/runtime/export_test.go b/src/pkg/runtime/export_test.go index 35a4130ee1..fd7fd182fc 100644 --- a/src/pkg/runtime/export_test.go +++ b/src/pkg/runtime/export_test.go @@ -111,8 +111,19 @@ func ParForIters(desc *ParFor, tid uint32) (uint32, uint32) { return begin, end } +// in mgc0.c //go:noescape -func GCMask(x interface{}) []byte +func getgcmask(data unsafe.Pointer, typ *_type, array **byte, len *uint) + +func GCMask(x interface{}) (ret []byte) { + e := (*eface)(unsafe.Pointer(&x)) + s := (*slice)(unsafe.Pointer(&ret)) + onM(func() { + getgcmask(e.data, e._type, &s.array, &s.len) + s.cap = s.len + }) + return +} func testSchedLocalQueue() func testSchedLocalQueueSteal() |
