mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: break out system-specific constants into package sys
runtime/internal/sys will hold system-, architecture- and config- specific constants. Updates #11647 Change-Id: I6db29c312556087a42e8d2bdd9af40d157c56b54 Reviewed-on: https://go-review.googlesource.com/16817 Reviewed-by: Russ Cox <rsc@golang.org>
This commit is contained in:
parent
b5a0c67fcc
commit
432cb66f16
101 changed files with 1049 additions and 749 deletions
|
|
@ -55,6 +55,7 @@ package runtime
|
|||
|
||||
import (
|
||||
"runtime/internal/atomic"
|
||||
"runtime/internal/sys"
|
||||
"unsafe"
|
||||
)
|
||||
|
||||
|
|
@ -96,7 +97,7 @@ const (
|
|||
oldIterator = 2 // there may be an iterator using oldbuckets
|
||||
|
||||
// sentinel bucket ID for iterator checks
|
||||
noCheck = 1<<(8*ptrSize) - 1
|
||||
noCheck = 1<<(8*sys.PtrSize) - 1
|
||||
)
|
||||
|
||||
// A header for a Go map.
|
||||
|
|
@ -160,7 +161,7 @@ func evacuated(b *bmap) bool {
|
|||
}
|
||||
|
||||
func (b *bmap) overflow(t *maptype) *bmap {
|
||||
return *(**bmap)(add(unsafe.Pointer(b), uintptr(t.bucketsize)-ptrSize))
|
||||
return *(**bmap)(add(unsafe.Pointer(b), uintptr(t.bucketsize)-sys.PtrSize))
|
||||
}
|
||||
|
||||
func (h *hmap) setoverflow(t *maptype, b, ovf *bmap) {
|
||||
|
|
@ -168,7 +169,7 @@ func (h *hmap) setoverflow(t *maptype, b, ovf *bmap) {
|
|||
h.createOverflow()
|
||||
*h.overflow[0] = append(*h.overflow[0], ovf)
|
||||
}
|
||||
*(**bmap)(add(unsafe.Pointer(b), uintptr(t.bucketsize)-ptrSize)) = ovf
|
||||
*(**bmap)(add(unsafe.Pointer(b), uintptr(t.bucketsize)-sys.PtrSize)) = ovf
|
||||
}
|
||||
|
||||
func (h *hmap) createOverflow() {
|
||||
|
|
@ -201,11 +202,11 @@ func makemap(t *maptype, hint int64, h *hmap, bucket unsafe.Pointer) *hmap {
|
|||
}
|
||||
|
||||
// check compiler's and reflect's math
|
||||
if t.key.size > maxKeySize && (!t.indirectkey || t.keysize != uint8(ptrSize)) ||
|
||||
if t.key.size > maxKeySize && (!t.indirectkey || t.keysize != uint8(sys.PtrSize)) ||
|
||||
t.key.size <= maxKeySize && (t.indirectkey || t.keysize != uint8(t.key.size)) {
|
||||
throw("key size wrong")
|
||||
}
|
||||
if t.elem.size > maxValueSize && (!t.indirectvalue || t.valuesize != uint8(ptrSize)) ||
|
||||
if t.elem.size > maxValueSize && (!t.indirectvalue || t.valuesize != uint8(sys.PtrSize)) ||
|
||||
t.elem.size <= maxValueSize && (t.indirectvalue || t.valuesize != uint8(t.elem.size)) {
|
||||
throw("value size wrong")
|
||||
}
|
||||
|
|
@ -293,7 +294,7 @@ func mapaccess1(t *maptype, h *hmap, key unsafe.Pointer) unsafe.Pointer {
|
|||
b = oldb
|
||||
}
|
||||
}
|
||||
top := uint8(hash >> (ptrSize*8 - 8))
|
||||
top := uint8(hash >> (sys.PtrSize*8 - 8))
|
||||
if top < minTopHash {
|
||||
top += minTopHash
|
||||
}
|
||||
|
|
@ -344,7 +345,7 @@ func mapaccess2(t *maptype, h *hmap, key unsafe.Pointer) (unsafe.Pointer, bool)
|
|||
b = oldb
|
||||
}
|
||||
}
|
||||
top := uint8(hash >> (ptrSize*8 - 8))
|
||||
top := uint8(hash >> (sys.PtrSize*8 - 8))
|
||||
if top < minTopHash {
|
||||
top += minTopHash
|
||||
}
|
||||
|
|
@ -387,7 +388,7 @@ func mapaccessK(t *maptype, h *hmap, key unsafe.Pointer) (unsafe.Pointer, unsafe
|
|||
b = oldb
|
||||
}
|
||||
}
|
||||
top := uint8(hash >> (ptrSize*8 - 8))
|
||||
top := uint8(hash >> (sys.PtrSize*8 - 8))
|
||||
if top < minTopHash {
|
||||
top += minTopHash
|
||||
}
|
||||
|
|
@ -444,7 +445,7 @@ again:
|
|||
growWork(t, h, bucket)
|
||||
}
|
||||
b := (*bmap)(unsafe.Pointer(uintptr(h.buckets) + bucket*uintptr(t.bucketsize)))
|
||||
top := uint8(hash >> (ptrSize*8 - 8))
|
||||
top := uint8(hash >> (sys.PtrSize*8 - 8))
|
||||
if top < minTopHash {
|
||||
top += minTopHash
|
||||
}
|
||||
|
|
@ -541,7 +542,7 @@ func mapdelete(t *maptype, h *hmap, key unsafe.Pointer) {
|
|||
growWork(t, h, bucket)
|
||||
}
|
||||
b := (*bmap)(unsafe.Pointer(uintptr(h.buckets) + bucket*uintptr(t.bucketsize)))
|
||||
top := uint8(hash >> (ptrSize*8 - 8))
|
||||
top := uint8(hash >> (sys.PtrSize*8 - 8))
|
||||
if top < minTopHash {
|
||||
top += minTopHash
|
||||
}
|
||||
|
|
@ -594,7 +595,7 @@ func mapiterinit(t *maptype, h *hmap, it *hiter) {
|
|||
return
|
||||
}
|
||||
|
||||
if unsafe.Sizeof(hiter{})/ptrSize != 12 {
|
||||
if unsafe.Sizeof(hiter{})/sys.PtrSize != 12 {
|
||||
throw("hash_iter size incorrect") // see ../../cmd/internal/gc/reflect.go
|
||||
}
|
||||
it.t = t
|
||||
|
|
@ -865,7 +866,7 @@ func evacuate(t *maptype, h *hmap, oldbucket uintptr) {
|
|||
} else {
|
||||
hash &^= newbit
|
||||
}
|
||||
top = uint8(hash >> (ptrSize*8 - 8))
|
||||
top = uint8(hash >> (sys.PtrSize*8 - 8))
|
||||
if top < minTopHash {
|
||||
top += minTopHash
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue