From b07f60b97ff5ea9ae4cf21b549e9d25ccd695f36 Mon Sep 17 00:00:00 2001 From: Tobias Klauser Date: Wed, 12 Sep 2018 14:18:45 +0200 Subject: [PATCH] runtime: use functions from mem_bsd.go on Darwin The implementations of the functions in mem_darwin.go is identical to the ones defined in mem_bsd.go for all other BSD-like GOOSes. Also use them on Darwin. Change-Id: Ie7c170c1a50666475e79599471081cd85f0837ad Reviewed-on: https://go-review.googlesource.com/134875 Run-TryBot: Tobias Klauser TryBot-Result: Gobot Gobot Reviewed-by: Keith Randall --- src/runtime/mem_bsd.go | 2 +- src/runtime/mem_darwin.go | 62 --------------------------------------- 2 files changed, 1 insertion(+), 63 deletions(-) delete mode 100644 src/runtime/mem_darwin.go diff --git a/src/runtime/mem_bsd.go b/src/runtime/mem_bsd.go index cc70e806ea..13065b61d4 100644 --- a/src/runtime/mem_bsd.go +++ b/src/runtime/mem_bsd.go @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// +build dragonfly freebsd nacl netbsd openbsd solaris +// +build darwin dragonfly freebsd nacl netbsd openbsd solaris package runtime diff --git a/src/runtime/mem_darwin.go b/src/runtime/mem_darwin.go deleted file mode 100644 index 75c59f9cdd..0000000000 --- a/src/runtime/mem_darwin.go +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright 2010 The Go Authors. All rights reserved. -// Use of this source code is governed by a BSD-style -// license that can be found in the LICENSE file. - -package runtime - -import "unsafe" - -// Don't split the stack as this function may be invoked without a valid G, -// which prevents us from allocating more stack. -//go:nosplit -func sysAlloc(n uintptr, sysStat *uint64) unsafe.Pointer { - v, err := mmap(nil, n, _PROT_READ|_PROT_WRITE, _MAP_ANON|_MAP_PRIVATE, -1, 0) - if err != 0 { - return nil - } - mSysStatInc(sysStat, n) - return v -} - -func sysUnused(v unsafe.Pointer, n uintptr) { - // Linux's MADV_DONTNEED is like BSD's MADV_FREE. - madvise(v, n, _MADV_FREE) -} - -func sysUsed(v unsafe.Pointer, n uintptr) { -} - -// Don't split the stack as this function may be invoked without a valid G, -// which prevents us from allocating more stack. -//go:nosplit -func sysFree(v unsafe.Pointer, n uintptr, sysStat *uint64) { - mSysStatDec(sysStat, n) - munmap(v, n) -} - -func sysFault(v unsafe.Pointer, n uintptr) { - mmap(v, n, _PROT_NONE, _MAP_ANON|_MAP_PRIVATE|_MAP_FIXED, -1, 0) -} - -func sysReserve(v unsafe.Pointer, n uintptr) unsafe.Pointer { - p, err := mmap(v, n, _PROT_NONE, _MAP_ANON|_MAP_PRIVATE, -1, 0) - if err != 0 { - return nil - } - return p -} - -const ( - _ENOMEM = 12 -) - -func sysMap(v unsafe.Pointer, n uintptr, sysStat *uint64) { - mSysStatInc(sysStat, n) - p, err := mmap(v, n, _PROT_READ|_PROT_WRITE, _MAP_ANON|_MAP_FIXED|_MAP_PRIVATE, -1, 0) - if err == _ENOMEM { - throw("runtime: out of memory") - } - if p != v || err != 0 { - throw("runtime: cannot map pages in arena address space") - } -} -- 2.50.0