]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: merge 64bit lfstack impls
authorDave Cheney <dave@cheney.net>
Wed, 6 Apr 2016 05:19:12 +0000 (15:19 +1000)
committerDave Cheney <dave@cheney.net>
Wed, 6 Apr 2016 06:47:31 +0000 (06:47 +0000)
Merge all the 64bit lfstack impls into one file, adjust build tags to
match.

Merge all the comments on the various lfstack implementations for
posterity.

lfstack_amd64.go can probably be merged, but it is slightly different so
that will happen in a followup.

Change-Id: I5362d5e127daa81c9cb9d4fa8a0cc5c5e5c2707c
Reviewed-on: https://go-review.googlesource.com/21591
Run-TryBot: Dave Cheney <dave@cheney.net>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Minux Ma <minux@golang.org>
src/runtime/lfstack_64bit.go [moved from src/runtime/lfstack_linux_ppc64x.go with 80% similarity]
src/runtime/lfstack_darwin_arm64.go [deleted file]
src/runtime/lfstack_linux_arm64.go [deleted file]
src/runtime/lfstack_linux_mips64x.go [deleted file]

similarity index 80%
rename from src/runtime/lfstack_linux_ppc64x.go
rename to src/runtime/lfstack_64bit.go
index 83b7cf4f588f29921ee2858877baeaec2d6f1eb0..27a058c7638b4a69b8c9fc5c107cb05795f435a8 100644 (file)
@@ -2,8 +2,7 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build ppc64 ppc64le
-// +build linux
+// +build arm64 mips64 mips64le ppc64 ppc64le
 
 package runtime
 
@@ -13,6 +12,10 @@ import "unsafe"
 // TASK_SIZE_USER64 in the Linux kernel).  This has grown over time,
 // so here we allow 48 bit addresses.
 //
+// On mips64, Linux limits the user address space to 40 bits (see
+// TASK_SIZE64 in the Linux kernel).  This has grown over time,
+// so here we allow 48 bit addresses.
+//
 // In addition to the 16 bits taken from the top, we can take 3 from the
 // bottom, because node must be pointer-aligned, giving a total of 19 bits
 // of count.
diff --git a/src/runtime/lfstack_darwin_arm64.go b/src/runtime/lfstack_darwin_arm64.go
deleted file mode 100644 (file)
index f48d763..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2014 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"
-
-// In addition to the 16 bits taken from the top, we can take 3 from the
-// bottom, because node must be pointer-aligned, giving a total of 19 bits
-// of count.
-const (
-       addrBits = 48
-       cntBits  = 64 - addrBits + 3
-)
-
-func lfstackPack(node *lfnode, cnt uintptr) uint64 {
-       return uint64(uintptr(unsafe.Pointer(node)))<<(64-addrBits) | uint64(cnt&(1<<cntBits-1))
-}
-
-func lfstackUnpack(val uint64) (node *lfnode, cnt uintptr) {
-       node = (*lfnode)(unsafe.Pointer(uintptr(val >> cntBits << 3)))
-       cnt = uintptr(val & (1<<cntBits - 1))
-       return
-}
diff --git a/src/runtime/lfstack_linux_arm64.go b/src/runtime/lfstack_linux_arm64.go
deleted file mode 100644 (file)
index f48d763..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2014 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"
-
-// In addition to the 16 bits taken from the top, we can take 3 from the
-// bottom, because node must be pointer-aligned, giving a total of 19 bits
-// of count.
-const (
-       addrBits = 48
-       cntBits  = 64 - addrBits + 3
-)
-
-func lfstackPack(node *lfnode, cnt uintptr) uint64 {
-       return uint64(uintptr(unsafe.Pointer(node)))<<(64-addrBits) | uint64(cnt&(1<<cntBits-1))
-}
-
-func lfstackUnpack(val uint64) (node *lfnode, cnt uintptr) {
-       node = (*lfnode)(unsafe.Pointer(uintptr(val >> cntBits << 3)))
-       cnt = uintptr(val & (1<<cntBits - 1))
-       return
-}
diff --git a/src/runtime/lfstack_linux_mips64x.go b/src/runtime/lfstack_linux_mips64x.go
deleted file mode 100644 (file)
index 7ff95f7..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2015 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.
-
-// +build mips64 mips64le
-// +build linux
-
-package runtime
-
-import "unsafe"
-
-// On mips64, Linux limits the user address space to 40 bits (see
-// TASK_SIZE64 in the Linux kernel).  This has grown over time,
-// so here we allow 48 bit addresses.
-//
-// In addition to the 16 bits taken from the top, we can take 3 from the
-// bottom, because node must be pointer-aligned, giving a total of 19 bits
-// of count.
-const (
-       addrBits = 48
-       cntBits  = 64 - addrBits + 3
-)
-
-func lfstackPack(node *lfnode, cnt uintptr) uint64 {
-       return uint64(uintptr(unsafe.Pointer(node)))<<(64-addrBits) | uint64(cnt&(1<<cntBits-1))
-}
-
-func lfstackUnpack(val uint64) (node *lfnode, cnt uintptr) {
-       node = (*lfnode)(unsafe.Pointer(uintptr(val >> cntBits << 3)))
-       cnt = uintptr(val & (1<<cntBits - 1))
-       return
-}