From fe1369ac98a4f1d8af5e8be6da71165339e52034 Mon Sep 17 00:00:00 2001 From: Michael Pratt Date: Thu, 31 Jan 2019 17:47:24 -0800 Subject: Move package sync to third_party PiperOrigin-RevId: 231889261 Change-Id: I482f1df055bcedf4edb9fe3fe9b8e9c80085f1a0 --- third_party/gvsync/memmove_unsafe.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 third_party/gvsync/memmove_unsafe.go (limited to 'third_party/gvsync/memmove_unsafe.go') diff --git a/third_party/gvsync/memmove_unsafe.go b/third_party/gvsync/memmove_unsafe.go new file mode 100644 index 000000000..d483fc739 --- /dev/null +++ b/third_party/gvsync/memmove_unsafe.go @@ -0,0 +1,23 @@ +// Copyright 2019 Google LLC +// +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +package gvsync + +import ( + "unsafe" +) + +// Memmove is exported for SeqAtomicLoad/SeqAtomicTryLoad, which can't +// define it because go_generics can't update the go:linkname annotation. +// Furthermore, go:linkname silently doesn't work if the local name is exported +// (this is of course undocumented), which is why this indirection is +// necessary. +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) -- cgit v1.2.3