diff options
author | gVisor bot <gvisor-bot@google.com> | 2021-04-14 18:37:19 +0000 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-04-14 18:37:19 +0000 |
commit | ca506c33c1f00c4e57f640340178007a813d3454 (patch) | |
tree | 52ef7111534dd020c5d026c3acc026769b863ecf /pkg/gohacks | |
parent | 3a197f66df7303d3bc89e89beeed02f22debda98 (diff) | |
parent | 5c1052b6bb2658208f1afaf423aeac98f30235c1 (diff) |
Merge release-20210408.0-30-g5c1052b6b (automated)
Diffstat (limited to 'pkg/gohacks')
-rw-r--r-- | pkg/gohacks/gohacks_unsafe.go | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/pkg/gohacks/gohacks_unsafe.go b/pkg/gohacks/gohacks_unsafe.go index 10bbb1f58..374aac2b4 100644 --- a/pkg/gohacks/gohacks_unsafe.go +++ b/pkg/gohacks/gohacks_unsafe.go @@ -75,3 +75,17 @@ func StringFromImmutableBytes(bs []byte) string { // strings.Builder.String(). return *(*string)(unsafe.Pointer(&bs)) } + +// Note that go:linkname silently doesn't work if the local name is exported, +// necessitating an indirection for exported functions. + +// Memmove is runtime.memmove, exported for SeqAtomicLoad/SeqAtomicTryLoad<T>. +// +//go:nosplit +func Memmove(to, from unsafe.Pointer, n uintptr) { + memmove(to, from, n) +} + +//go:linkname memmove runtime.memmove +//go:noescape +func memmove(to, from unsafe.Pointer, n uintptr) |