aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/select.go
diff options
context:
space:
mode:
authorAustin Clements <austin@google.com>2016-10-17 17:00:05 -0400
committerAustin Clements <austin@google.com>2016-10-28 18:20:04 +0000
commitaa581f51570b1c35dc2648226fd8de861de526d4 (patch)
treee94aab60525446ca1058b5f62240b1d92c068309 /src/runtime/select.go
parenta475a38a3dcd48541f60e40b1dac3c84ab72d0e5 (diff)
downloadgo-aa581f51570b1c35dc2648226fd8de861de526d4.tar.gz
go-aa581f51570b1c35dc2648226fd8de861de526d4.zip
runtime: use typedmemclr for typed memory
The hybrid barrier requires distinguishing typed and untyped memory even when zeroing because the *current* contents of the memory matters even when overwriting. This commit introduces runtime.typedmemclr and runtime.memclrHasPointers as a typed memory clearing functions parallel to runtime.typedmemmove. Currently these simply call memclr, but with the hybrid barrier we'll need to shade any pointers we're overwriting. These will provide us with the necessary hooks to do so. Updates #17503. Change-Id: I74478619f8907825898092aaa204d6e4690f27e6 Reviewed-on: https://go-review.googlesource.com/31366 Reviewed-by: Keith Randall <khr@golang.org> Reviewed-by: Rick Hudson <rlh@golang.org>
Diffstat (limited to 'src/runtime/select.go')
-rw-r--r--src/runtime/select.go4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/runtime/select.go b/src/runtime/select.go
index 1aaafff198..03e9e4a30a 100644
--- a/src/runtime/select.go
+++ b/src/runtime/select.go
@@ -518,7 +518,7 @@ bufrecv:
if cas.elem != nil {
typedmemmove(c.elemtype, cas.elem, qp)
}
- memclr(qp, uintptr(c.elemsize))
+ typedmemclr(c.elemtype, qp)
c.recvx++
if c.recvx == c.dataqsiz {
c.recvx = 0
@@ -564,7 +564,7 @@ rclose:
*cas.receivedp = false
}
if cas.elem != nil {
- memclr(cas.elem, uintptr(c.elemsize))
+ typedmemclr(c.elemtype, cas.elem)
}
if raceenabled {
raceacquire(unsafe.Pointer(c))