]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: replace sys.CacheLineSize by corresponding internal/cpu const and vars
authorMartin Möhrmann <moehrmann@google.com>
Tue, 5 Jun 2018 06:14:57 +0000 (08:14 +0200)
committerMartin Möhrmann <moehrmann@google.com>
Fri, 24 Aug 2018 18:28:25 +0000 (18:28 +0000)
sys here is runtime/internal/sys.

Replace uses of sys.CacheLineSize for padding by
cpu.CacheLinePad or cpu.CacheLinePadSize.
Replace other uses of sys.CacheLineSize by cpu.CacheLineSize.
Remove now unused sys.CacheLineSize.

Updates #25203

Change-Id: I1daf410fe8f6c0493471c2ceccb9ca0a5a75ed8f
Reviewed-on: https://go-review.googlesource.com/126601
Run-TryBot: Martin Möhrmann <moehrmann@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
23 files changed:
src/go/build/deps_test.go
src/internal/cpu/cpu.go
src/runtime/internal/atomic/atomic_arm.go
src/runtime/internal/atomic/atomic_mipsx.go
src/runtime/internal/sys/arch_386.go
src/runtime/internal/sys/arch_amd64.go
src/runtime/internal/sys/arch_amd64p32.go
src/runtime/internal/sys/arch_arm.go
src/runtime/internal/sys/arch_arm64.go
src/runtime/internal/sys/arch_mips.go
src/runtime/internal/sys/arch_mips64.go
src/runtime/internal/sys/arch_mips64le.go
src/runtime/internal/sys/arch_mipsle.go
src/runtime/internal/sys/arch_ppc64.go
src/runtime/internal/sys/arch_ppc64le.go
src/runtime/internal/sys/arch_s390x.go
src/runtime/internal/sys/arch_wasm.go
src/runtime/mgc.go
src/runtime/mgcsweepbuf.go
src/runtime/mheap.go
src/runtime/runtime2.go
src/runtime/sema.go
src/runtime/time.go

index 729d0db51f24b54f4f83b8b991c5dc7d4d46b99d..244c745d41df1417f10a712a74b34521b87e8cdc 100644 (file)
@@ -38,7 +38,7 @@ var pkgDeps = map[string][]string{
        "io":                      {"errors", "sync", "sync/atomic"},
        "runtime":                 {"unsafe", "runtime/internal/atomic", "runtime/internal/sys", "internal/cpu", "internal/bytealg"},
        "runtime/internal/sys":    {},
-       "runtime/internal/atomic": {"unsafe", "runtime/internal/sys"},
+       "runtime/internal/atomic": {"unsafe", "internal/cpu"},
        "internal/race":           {"runtime", "unsafe"},
        "sync":                    {"internal/race", "runtime", "sync/atomic", "unsafe"},
        "sync/atomic":             {"unsafe"},
index 5363f11b90839c3ba8209a9a857e1dac67519a8c..bfb016c7f722d7e793e52a0ce9012e99d64e0489 100644 (file)
@@ -17,7 +17,7 @@ type CacheLinePad struct{ _ [CacheLinePadSize]byte }
 // CacheLineSize is the CPU's assumed cache line size.
 // There is currently no runtime detection of the real cache line size
 // so we use the constant per GOARCH CacheLinePadSize as an approximation.
-var CacheLineSize = CacheLinePadSize
+var CacheLineSize uintptr = CacheLinePadSize
 
 var X86 x86
 
index 4ed7e991fe294ab840b08dbe6136366d4d411bc0..1ecdb11db96b3dff547b519fb1ca494c3c736caf 100644 (file)
@@ -7,7 +7,7 @@
 package atomic
 
 import (
-       "runtime/internal/sys"
+       "internal/cpu"
        "unsafe"
 )
 
@@ -31,7 +31,7 @@ func (l *spinlock) unlock() {
 
 var locktab [57]struct {
        l   spinlock
-       pad [sys.CacheLineSize - unsafe.Sizeof(spinlock{})]byte
+       pad [cpu.CacheLinePadSize - unsafe.Sizeof(spinlock{})]byte
 }
 
 func addrLock(addr *uint64) *spinlock {
index 32be1c779d9695b5ca1f52b6f91fdea004fc1240..55943f6925c258ad6e05ef7f0f2f41d4c07bcbec 100644 (file)
@@ -7,14 +7,14 @@
 package atomic
 
 import (
-       "runtime/internal/sys"
+       "internal/cpu"
        "unsafe"
 )
 
 // TODO implement lock striping
 var lock struct {
        state uint32
-       pad   [sys.CacheLineSize - 4]byte
+       pad   [cpu.CacheLinePadSize - 4]byte
 }
 
 //go:noescape
index 5fb1fba02b6ef81c822ed7f4358fafced9d49057..537570133709d788f26a394ffd7fff1f385d24d3 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = I386
        BigEndian           = false
-       CacheLineSize       = 64
        DefaultPhysPageSize = GoosNacl*65536 + (1-GoosNacl)*4096 // 4k normally; 64k on NaCl
        PCQuantum           = 1
        Int64Align          = 4
index 2f32bc469ffdc38bbb778b964bf9717dd97c3380..86fed4d53102f1697614179942ddc0ab2adbc41d 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = AMD64
        BigEndian           = false
-       CacheLineSize       = 64
        DefaultPhysPageSize = 4096
        PCQuantum           = 1
        Int64Align          = 8
index c560907c6784eaba2af0dccceb413732419f3a58..749d724809f2bf32b2d3a4e58bd239973ec43d17 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = AMD64
        BigEndian           = false
-       CacheLineSize       = 64
        DefaultPhysPageSize = 65536*GoosNacl + 4096*(1-GoosNacl)
        PCQuantum           = 1
        Int64Align          = 8
index f383d82027cf4c58bc1a13260d1e7410394eb58d..2af09e0e35491ec5df97ca7cfa2fadab9f1ea43a 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = ARM
        BigEndian           = false
-       CacheLineSize       = 32
        DefaultPhysPageSize = 65536
        PCQuantum           = 4
        Int64Align          = 4
index cb83ecc44572464ee843b806dafee3a467c9cae8..f13d2de129aa978c18714b66f6867b1b08139e65 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = ARM64
        BigEndian           = false
-       CacheLineSize       = 64
        DefaultPhysPageSize = 65536
        PCQuantum           = 4
        Int64Align          = 8
index e12f32d0eeb82e289498e581ea8d652361bae792..e9bd69c928e481659d018f67dae815429029c6d3 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = MIPS
        BigEndian           = true
-       CacheLineSize       = 32
        DefaultPhysPageSize = 65536
        PCQuantum           = 4
        Int64Align          = 4
index 973ec10e17f9e2229245fc651417bd198d32b3d4..5eb7b2b7b13463ff7f0fd7a8750956be22fd1af8 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = MIPS64
        BigEndian           = true
-       CacheLineSize       = 32
        DefaultPhysPageSize = 16384
        PCQuantum           = 4
        Int64Align          = 8
index e96d962f368b9c70cacbaf16b167995e9ad03ed9..14c804ed85bb07df35bbae95a45e70d3e7e5993d 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = MIPS64
        BigEndian           = false
-       CacheLineSize       = 32
        DefaultPhysPageSize = 16384
        PCQuantum           = 4
        Int64Align          = 8
index 25742ae9d3f188fcdc21b7c86dd655563fed9b15..91badb17d51753404118da805cb5903d42abf214 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = MIPS
        BigEndian           = false
-       CacheLineSize       = 32
        DefaultPhysPageSize = 65536
        PCQuantum           = 4
        Int64Align          = 4
index a538bbdec0b5348760baa77a74e518568238925a..8cde4e18d0cd61424891bff89935afbd1e9b982e 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = PPC64
        BigEndian           = true
-       CacheLineSize       = 128
        DefaultPhysPageSize = 65536
        PCQuantum           = 4
        Int64Align          = 8
index aa506891817e3dbbb329405287c4fea2e895f296..10c0066849a9545a02790db9b9f32b6599efe332 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = PPC64
        BigEndian           = false
-       CacheLineSize       = 128
        DefaultPhysPageSize = 65536
        PCQuantum           = 4
        Int64Align          = 8
index e42c420a542c14e0178803579824897921fd1c45..77fd4bf07d7db54e9a11248f57846bf82047dd2b 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = S390X
        BigEndian           = true
-       CacheLineSize       = 256
        DefaultPhysPageSize = 4096
        PCQuantum           = 2
        Int64Align          = 8
index 5463f934d607a1849b8917a221335c1f56a9f86c..203fc2e472b28df88a9ad24b28d5925e8ae8bef6 100644 (file)
@@ -7,7 +7,6 @@ package sys
 const (
        ArchFamily          = WASM
        BigEndian           = false
-       CacheLineSize       = 64
        DefaultPhysPageSize = 65536
        PCQuantum           = 1
        Int64Align          = 8
index f54c8eb14f5402d361bfc0a781f32ee066a8f1d7..c95b5ed37f8efcb267a02a8fe4994c6027be7380 100644 (file)
 package runtime
 
 import (
+       "internal/cpu"
        "runtime/internal/atomic"
-       "runtime/internal/sys"
        "unsafe"
 )
 
@@ -414,7 +414,7 @@ type gcControllerState struct {
        // If this is zero, no fractional workers are needed.
        fractionalUtilizationGoal float64
 
-       _ [sys.CacheLineSize]byte
+       _ cpu.CacheLinePad
 }
 
 // startCycle resets the GC controller's state and computes estimates
@@ -919,9 +919,9 @@ const gcAssistTimeSlack = 5000
 const gcOverAssistWork = 64 << 10
 
 var work struct {
-       full  lfstack                  // lock-free list of full blocks workbuf
-       empty lfstack                  // lock-free list of empty blocks workbuf
-       pad0  [sys.CacheLineSize]uint8 // prevents false-sharing between full/empty and nproc/nwait
+       full  lfstack          // lock-free list of full blocks workbuf
+       empty lfstack          // lock-free list of empty blocks workbuf
+       pad0  cpu.CacheLinePad // prevents false-sharing between full/empty and nproc/nwait
 
        wbufSpans struct {
                lock mutex
index 6c1118e3857ccfe4b44585590fba7ad81b6bfcc6..0491f7ccf6c980fae58796a3f28ef2051b17ee7a 100644 (file)
@@ -5,6 +5,7 @@
 package runtime
 
 import (
+       "internal/cpu"
        "runtime/internal/atomic"
        "runtime/internal/sys"
        "unsafe"
@@ -83,7 +84,7 @@ retry:
                        if newCap == 0 {
                                newCap = gcSweepBufInitSpineCap
                        }
-                       newSpine := persistentalloc(newCap*sys.PtrSize, sys.CacheLineSize, &memstats.gc_sys)
+                       newSpine := persistentalloc(newCap*sys.PtrSize, cpu.CacheLineSize, &memstats.gc_sys)
                        if b.spineCap != 0 {
                                // Blocks are allocated off-heap, so
                                // no write barriers.
@@ -102,7 +103,7 @@ retry:
                }
 
                // Allocate a new block and add it to the spine.
-               block = (*gcSweepBlock)(persistentalloc(unsafe.Sizeof(gcSweepBlock{}), sys.CacheLineSize, &memstats.gc_sys))
+               block = (*gcSweepBlock)(persistentalloc(unsafe.Sizeof(gcSweepBlock{}), cpu.CacheLineSize, &memstats.gc_sys))
                blockp := add(b.spine, sys.PtrSize*top)
                // Blocks are allocated off-heap, so no write barrier.
                atomic.StorepNoWB(blockp, unsafe.Pointer(block))
index b11853ca18dccf69362dada74ea2275201395928..00ecfa2d66cb69b5b5dc379a2cb0aa0bd27ce84e 100644 (file)
@@ -9,6 +9,7 @@
 package runtime
 
 import (
+       "internal/cpu"
        "runtime/internal/atomic"
        "runtime/internal/sys"
        "unsafe"
@@ -137,12 +138,12 @@ type mheap struct {
 
        // central free lists for small size classes.
        // the padding makes sure that the MCentrals are
-       // spaced CacheLineSize bytes apart, so that each MCentral.lock
+       // spaced CacheLinePadSize bytes apart, so that each MCentral.lock
        // gets its own cache line.
        // central is indexed by spanClass.
        central [numSpanClasses]struct {
                mcentral mcentral
-               pad      [sys.CacheLineSize - unsafe.Sizeof(mcentral{})%sys.CacheLineSize]byte
+               pad      [cpu.CacheLinePadSize - unsafe.Sizeof(mcentral{})%cpu.CacheLinePadSize]byte
        }
 
        spanalloc             fixalloc // allocator for span*
index 93119249426d99f4681d624ff6f1f48a65ce4fb3..e4c6b3b52a7e69517a4b48b1fb990164d94288dc 100644 (file)
@@ -5,6 +5,7 @@
 package runtime
 
 import (
+       "internal/cpu"
        "runtime/internal/atomic"
        "runtime/internal/sys"
        "unsafe"
@@ -548,7 +549,7 @@ type p struct {
 
        runSafePointFn uint32 // if 1, run sched.safePointFn at next safe point
 
-       pad [sys.CacheLineSize]byte
+       pad cpu.CacheLinePad
 }
 
 type schedt struct {
index aba97331275adb9e11b418f23545dbdca97a98fb..18e0a398ba76c022157f337bfee9f45cc628d922 100644 (file)
@@ -20,8 +20,8 @@
 package runtime
 
 import (
+       "internal/cpu"
        "runtime/internal/atomic"
-       "runtime/internal/sys"
        "unsafe"
 )
 
@@ -48,7 +48,7 @@ const semTabSize = 251
 
 var semtable [semTabSize]struct {
        root semaRoot
-       pad  [sys.CacheLineSize - unsafe.Sizeof(semaRoot{})]byte
+       pad  [cpu.CacheLinePadSize - unsafe.Sizeof(semaRoot{})]byte
 }
 
 //go:linkname sync_runtime_Semacquire sync.runtime_Semacquire
index 9de45f5e08e597377c929a06f2bd93c3e394ee95..790819f25987f18384503e6e4701db908d483252 100644 (file)
@@ -7,7 +7,7 @@
 package runtime
 
 import (
-       "runtime/internal/sys"
+       "internal/cpu"
        "unsafe"
 )
 
@@ -50,7 +50,7 @@ var timers [timersLen]struct {
 
        // The padding should eliminate false sharing
        // between timersBucket values.
-       pad [sys.CacheLineSize - unsafe.Sizeof(timersBucket{})%sys.CacheLineSize]byte
+       pad [cpu.CacheLinePadSize - unsafe.Sizeof(timersBucket{})%cpu.CacheLinePadSize]byte
 }
 
 func (t *timer) assignBucket() *timersBucket {