aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorDavid Chase <drchase@google.com>2024-07-23 11:43:23 -0400
committerDavid Chase <drchase@google.com>2024-07-23 19:05:35 +0000
commitfc5073bc155545dde4856cccdfcbb31880d1eb66 (patch)
tree90aba60eda016a9392cd8ee0d55a154d0aa570e3 /src/runtime
parentf9eb3e3cd59c1cf38a98f2367c6c8dc180db9a95 (diff)
downloadgo-fc5073bc155545dde4856cccdfcbb31880d1eb66.tar.xz
runtime,internal: move runtime/internal/sys to internal/runtime/sys
Cleanup and friction reduction For #65355. Change-Id: Ia14c9dc584a529a35b97801dd3e95b9acc99a511 Reviewed-on: https://go-review.googlesource.com/c/go/+/600436 Reviewed-by: Keith Randall <khr@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Keith Randall <khr@golang.org>
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/HACKING.md2
-rw-r--r--src/runtime/arena.go2
-rw-r--r--src/runtime/cgo/cgo.go2
-rw-r--r--src/runtime/cgocall.go2
-rw-r--r--src/runtime/cpuprof.go2
-rw-r--r--src/runtime/debuglog.go2
-rw-r--r--src/runtime/export_test.go2
-rw-r--r--src/runtime/histogram.go2
-rw-r--r--src/runtime/iface.go2
-rw-r--r--src/runtime/internal/sys/consts.go36
-rw-r--r--src/runtime/internal/sys/consts_norace.go9
-rw-r--r--src/runtime/internal/sys/consts_race.go9
-rw-r--r--src/runtime/internal/sys/intrinsics.go208
-rw-r--r--src/runtime/internal/sys/intrinsics_test.go42
-rw-r--r--src/runtime/internal/sys/nih.go41
-rw-r--r--src/runtime/internal/sys/sys.go7
-rw-r--r--src/runtime/malloc.go6
-rw-r--r--src/runtime/mbitmap.go2
-rw-r--r--src/runtime/mcache.go2
-rw-r--r--src/runtime/mcentral.go2
-rw-r--r--src/runtime/mcheckmark.go2
-rw-r--r--src/runtime/mfinal.go2
-rw-r--r--src/runtime/mfixalloc.go4
-rw-r--r--src/runtime/mgcmark.go2
-rw-r--r--src/runtime/mgcscavenge.go2
-rw-r--r--src/runtime/mgcstack.go2
-rw-r--r--src/runtime/mgcwork.go2
-rw-r--r--src/runtime/mheap.go2
-rw-r--r--src/runtime/mpagecache.go2
-rw-r--r--src/runtime/mpallocbits.go2
-rw-r--r--src/runtime/mprof.go2
-rw-r--r--src/runtime/netpoll.go4
-rw-r--r--src/runtime/panic.go2
-rw-r--r--src/runtime/proc.go2
-rw-r--r--src/runtime/runtime2.go2
-rw-r--r--src/runtime/signal_arm64.go2
-rw-r--r--src/runtime/signal_linux_s390x.go2
-rw-r--r--src/runtime/signal_mipsx.go2
-rw-r--r--src/runtime/signal_ppc64x.go2
-rw-r--r--src/runtime/signal_unix.go2
-rw-r--r--src/runtime/signal_windows.go2
-rw-r--r--src/runtime/slice.go4
-rw-r--r--src/runtime/stack.go2
-rw-r--r--src/runtime/stkframe.go2
-rw-r--r--src/runtime/symtab.go2
-rw-r--r--src/runtime/symtabinl_test.go2
-rw-r--r--src/runtime/sys_wasm.go2
-rw-r--r--src/runtime/time.go2
-rw-r--r--src/runtime/traceallocfree.go2
-rw-r--r--src/runtime/traceback.go2
-rw-r--r--src/runtime/tracebuf.go2
-rw-r--r--src/runtime/traceevent.go2
-rw-r--r--src/runtime/tracemap.go2
-rw-r--r--src/runtime/traceregion.go2
54 files changed, 52 insertions, 404 deletions
diff --git a/src/runtime/HACKING.md b/src/runtime/HACKING.md
index e1a43ba88e..f0c60f3af9 100644
--- a/src/runtime/HACKING.md
+++ b/src/runtime/HACKING.md
@@ -235,7 +235,7 @@ There are three mechanisms for allocating unmanaged memory:
objects of the same type.
In general, types that are allocated using any of these should be
-marked as not in heap by embedding `runtime/internal/sys.NotInHeap`.
+marked as not in heap by embedding `internal/runtime/sys.NotInHeap`.
Objects that are allocated in unmanaged memory **must not** contain
heap pointers unless the following rules are also obeyed:
diff --git a/src/runtime/arena.go b/src/runtime/arena.go
index 96197099ca..936e3604bf 100644
--- a/src/runtime/arena.go
+++ b/src/runtime/arena.go
@@ -87,7 +87,7 @@ import (
"internal/goarch"
"internal/runtime/atomic"
"internal/runtime/math"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/cgo/cgo.go b/src/runtime/cgo/cgo.go
index 1e3a502918..c37135fbbe 100644
--- a/src/runtime/cgo/cgo.go
+++ b/src/runtime/cgo/cgo.go
@@ -32,7 +32,7 @@ package cgo
*/
import "C"
-import "runtime/internal/sys"
+import "internal/runtime/sys"
// Incomplete is used specifically for the semantics of incomplete C types.
type Incomplete struct {
diff --git a/src/runtime/cgocall.go b/src/runtime/cgocall.go
index b943b1c2d6..ae91627972 100644
--- a/src/runtime/cgocall.go
+++ b/src/runtime/cgocall.go
@@ -88,7 +88,7 @@ import (
"internal/abi"
"internal/goarch"
"internal/goexperiment"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/cpuprof.go b/src/runtime/cpuprof.go
index 100a78258a..ea4d3a8cb0 100644
--- a/src/runtime/cpuprof.go
+++ b/src/runtime/cpuprof.go
@@ -14,7 +14,7 @@ package runtime
import (
"internal/abi"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/debuglog.go b/src/runtime/debuglog.go
index 695cd204f5..25186af7e0 100644
--- a/src/runtime/debuglog.go
+++ b/src/runtime/debuglog.go
@@ -18,7 +18,7 @@ package runtime
import (
"internal/abi"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/export_test.go b/src/runtime/export_test.go
index d55da1028d..759463755a 100644
--- a/src/runtime/export_test.go
+++ b/src/runtime/export_test.go
@@ -11,7 +11,7 @@ import (
"internal/goarch"
"internal/goos"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/histogram.go b/src/runtime/histogram.go
index 95230d1f39..920a9561d2 100644
--- a/src/runtime/histogram.go
+++ b/src/runtime/histogram.go
@@ -6,7 +6,7 @@ package runtime
import (
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/iface.go b/src/runtime/iface.go
index 41a10ae012..5316182f4a 100644
--- a/src/runtime/iface.go
+++ b/src/runtime/iface.go
@@ -8,7 +8,7 @@ import (
"internal/abi"
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/internal/sys/consts.go b/src/runtime/internal/sys/consts.go
deleted file mode 100644
index 98c0f09ef1..0000000000
--- a/src/runtime/internal/sys/consts.go
+++ /dev/null
@@ -1,36 +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 sys
-
-import (
- "internal/goarch"
- "internal/goos"
-)
-
-// AIX requires a larger stack for syscalls.
-// The race build also needs more stack. See issue 54291.
-// This arithmetic must match that in cmd/internal/objabi/stack.go:stackGuardMultiplier.
-const StackGuardMultiplier = 1 + goos.IsAix + isRace
-
-// DefaultPhysPageSize is the default physical page size.
-const DefaultPhysPageSize = goarch.DefaultPhysPageSize
-
-// PCQuantum is the minimal unit for a program counter (1 on x86, 4 on most other systems).
-// The various PC tables record PC deltas pre-divided by PCQuantum.
-const PCQuantum = goarch.PCQuantum
-
-// Int64Align is the required alignment for a 64-bit integer (4 on 32-bit systems, 8 on 64-bit).
-const Int64Align = goarch.PtrSize
-
-// MinFrameSize is the size of the system-reserved words at the bottom
-// of a frame (just above the architectural stack pointer).
-// It is zero on x86 and PtrSize on most non-x86 (LR-based) systems.
-// On PowerPC it is larger, to cover three more reserved words:
-// the compiler word, the link editor word, and the TOC save word.
-const MinFrameSize = goarch.MinFrameSize
-
-// StackAlign is the required alignment of the SP register.
-// The stack must be at least word aligned, but some architectures require more.
-const StackAlign = goarch.StackAlign
diff --git a/src/runtime/internal/sys/consts_norace.go b/src/runtime/internal/sys/consts_norace.go
deleted file mode 100644
index a9613b8843..0000000000
--- a/src/runtime/internal/sys/consts_norace.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2022 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.
-
-//go:build !race
-
-package sys
-
-const isRace = 0
diff --git a/src/runtime/internal/sys/consts_race.go b/src/runtime/internal/sys/consts_race.go
deleted file mode 100644
index f824fb39d3..0000000000
--- a/src/runtime/internal/sys/consts_race.go
+++ /dev/null
@@ -1,9 +0,0 @@
-// Copyright 2022 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.
-
-//go:build race
-
-package sys
-
-const isRace = 1
diff --git a/src/runtime/internal/sys/intrinsics.go b/src/runtime/internal/sys/intrinsics.go
deleted file mode 100644
index e6a3758447..0000000000
--- a/src/runtime/internal/sys/intrinsics.go
+++ /dev/null
@@ -1,208 +0,0 @@
-// Copyright 2016 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 sys
-
-// Copied from math/bits to avoid dependence.
-
-var deBruijn32tab = [32]byte{
- 0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8,
- 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9,
-}
-
-const deBruijn32 = 0x077CB531
-
-var deBruijn64tab = [64]byte{
- 0, 1, 56, 2, 57, 49, 28, 3, 61, 58, 42, 50, 38, 29, 17, 4,
- 62, 47, 59, 36, 45, 43, 51, 22, 53, 39, 33, 30, 24, 18, 12, 5,
- 63, 55, 48, 27, 60, 41, 37, 16, 46, 35, 44, 21, 52, 32, 23, 11,
- 54, 26, 40, 15, 34, 20, 31, 10, 25, 14, 19, 9, 13, 8, 7, 6,
-}
-
-const deBruijn64 = 0x03f79d71b4ca8b09
-
-const ntz8tab = "" +
- "\x08\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x04\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x05\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x04\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x06\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x04\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x05\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x04\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x07\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x04\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x05\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x04\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x06\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x04\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x05\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00" +
- "\x04\x00\x01\x00\x02\x00\x01\x00\x03\x00\x01\x00\x02\x00\x01\x00"
-
-// TrailingZeros32 returns the number of trailing zero bits in x; the result is 32 for x == 0.
-func TrailingZeros32(x uint32) int {
- if x == 0 {
- return 32
- }
- // see comment in TrailingZeros64
- return int(deBruijn32tab[(x&-x)*deBruijn32>>(32-5)])
-}
-
-// TrailingZeros64 returns the number of trailing zero bits in x; the result is 64 for x == 0.
-func TrailingZeros64(x uint64) int {
- if x == 0 {
- return 64
- }
- // If popcount is fast, replace code below with return popcount(^x & (x - 1)).
- //
- // x & -x leaves only the right-most bit set in the word. Let k be the
- // index of that bit. Since only a single bit is set, the value is two
- // to the power of k. Multiplying by a power of two is equivalent to
- // left shifting, in this case by k bits. The de Bruijn (64 bit) constant
- // is such that all six bit, consecutive substrings are distinct.
- // Therefore, if we have a left shifted version of this constant we can
- // find by how many bits it was shifted by looking at which six bit
- // substring ended up at the top of the word.
- // (Knuth, volume 4, section 7.3.1)
- return int(deBruijn64tab[(x&-x)*deBruijn64>>(64-6)])
-}
-
-// TrailingZeros8 returns the number of trailing zero bits in x; the result is 8 for x == 0.
-func TrailingZeros8(x uint8) int {
- return int(ntz8tab[x])
-}
-
-const len8tab = "" +
- "\x00\x01\x02\x02\x03\x03\x03\x03\x04\x04\x04\x04\x04\x04\x04\x04" +
- "\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05\x05" +
- "\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06" +
- "\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06\x06" +
- "\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07" +
- "\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07" +
- "\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07" +
- "\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07\x07" +
- "\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08" +
- "\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08" +
- "\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08" +
- "\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08" +
- "\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08" +
- "\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08" +
- "\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08" +
- "\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08\x08"
-
-// Len64 returns the minimum number of bits required to represent x; the result is 0 for x == 0.
-//
-// nosplit because this is used in src/runtime/histogram.go, which make run in sensitive contexts.
-//
-//go:nosplit
-func Len64(x uint64) (n int) {
- if x >= 1<<32 {
- x >>= 32
- n = 32
- }
- if x >= 1<<16 {
- x >>= 16
- n += 16
- }
- if x >= 1<<8 {
- x >>= 8
- n += 8
- }
- return n + int(len8tab[x])
-}
-
-// --- OnesCount ---
-
-const m0 = 0x5555555555555555 // 01010101 ...
-const m1 = 0x3333333333333333 // 00110011 ...
-const m2 = 0x0f0f0f0f0f0f0f0f // 00001111 ...
-
-// OnesCount64 returns the number of one bits ("population count") in x.
-func OnesCount64(x uint64) int {
- // Implementation: Parallel summing of adjacent bits.
- // See "Hacker's Delight", Chap. 5: Counting Bits.
- // The following pattern shows the general approach:
- //
- // x = x>>1&(m0&m) + x&(m0&m)
- // x = x>>2&(m1&m) + x&(m1&m)
- // x = x>>4&(m2&m) + x&(m2&m)
- // x = x>>8&(m3&m) + x&(m3&m)
- // x = x>>16&(m4&m) + x&(m4&m)
- // x = x>>32&(m5&m) + x&(m5&m)
- // return int(x)
- //
- // Masking (& operations) can be left away when there's no
- // danger that a field's sum will carry over into the next
- // field: Since the result cannot be > 64, 8 bits is enough
- // and we can ignore the masks for the shifts by 8 and up.
- // Per "Hacker's Delight", the first line can be simplified
- // more, but it saves at best one instruction, so we leave
- // it alone for clarity.
- const m = 1<<64 - 1
- x = x>>1&(m0&m) + x&(m0&m)
- x = x>>2&(m1&m) + x&(m1&m)
- x = (x>>4 + x) & (m2 & m)
- x += x >> 8
- x += x >> 16
- x += x >> 32
- return int(x) & (1<<7 - 1)
-}
-
-// LeadingZeros64 returns the number of leading zero bits in x; the result is 64 for x == 0.
-func LeadingZeros64(x uint64) int { return 64 - Len64(x) }
-
-// LeadingZeros8 returns the number of leading zero bits in x; the result is 8 for x == 0.
-func LeadingZeros8(x uint8) int { return 8 - Len8(x) }
-
-// Len8 returns the minimum number of bits required to represent x; the result is 0 for x == 0.
-func Len8(x uint8) int {
- return int(len8tab[x])
-}
-
-// Bswap64 returns its input with byte order reversed
-// 0x0102030405060708 -> 0x0807060504030201
-func Bswap64(x uint64) uint64 {
- c8 := uint64(0x00ff00ff00ff00ff)
- a := x >> 8 & c8
- b := (x & c8) << 8
- x = a | b
- c16 := uint64(0x0000ffff0000ffff)
- a = x >> 16 & c16
- b = (x & c16) << 16
- x = a | b
- c32 := uint64(0x00000000ffffffff)
- a = x >> 32 & c32
- b = (x & c32) << 32
- x = a | b
- return x
-}
-
-// Bswap32 returns its input with byte order reversed
-// 0x01020304 -> 0x04030201
-func Bswap32(x uint32) uint32 {
- c8 := uint32(0x00ff00ff)
- a := x >> 8 & c8
- b := (x & c8) << 8
- x = a | b
- c16 := uint32(0x0000ffff)
- a = x >> 16 & c16
- b = (x & c16) << 16
- x = a | b
- return x
-}
-
-// Prefetch prefetches data from memory addr to cache
-//
-// AMD64: Produce PREFETCHT0 instruction
-//
-// ARM64: Produce PRFM instruction with PLDL1KEEP option
-func Prefetch(addr uintptr) {}
-
-// PrefetchStreamed prefetches data from memory addr, with a hint that this data is being streamed.
-// That is, it is likely to be accessed very soon, but only once. If possible, this will avoid polluting the cache.
-//
-// AMD64: Produce PREFETCHNTA instruction
-//
-// ARM64: Produce PRFM instruction with PLDL1STRM option
-func PrefetchStreamed(addr uintptr) {}
diff --git a/src/runtime/internal/sys/intrinsics_test.go b/src/runtime/internal/sys/intrinsics_test.go
deleted file mode 100644
index 6799885001..0000000000
--- a/src/runtime/internal/sys/intrinsics_test.go
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2016 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 sys_test
-
-import (
- "runtime/internal/sys"
- "testing"
-)
-
-func TestTrailingZeros64(t *testing.T) {
- for i := 0; i <= 64; i++ {
- x := uint64(5) << uint(i)
- if got := sys.TrailingZeros64(x); got != i {
- t.Errorf("TrailingZeros64(%d)=%d, want %d", x, got, i)
- }
- }
-}
-func TestTrailingZeros32(t *testing.T) {
- for i := 0; i <= 32; i++ {
- x := uint32(5) << uint(i)
- if got := sys.TrailingZeros32(x); got != i {
- t.Errorf("TrailingZeros32(%d)=%d, want %d", x, got, i)
- }
- }
-}
-
-func TestBswap64(t *testing.T) {
- x := uint64(0x1122334455667788)
- y := sys.Bswap64(x)
- if y != 0x8877665544332211 {
- t.Errorf("Bswap(%x)=%x, want 0x8877665544332211", x, y)
- }
-}
-func TestBswap32(t *testing.T) {
- x := uint32(0x11223344)
- y := sys.Bswap32(x)
- if y != 0x44332211 {
- t.Errorf("Bswap(%x)=%x, want 0x44332211", x, y)
- }
-}
diff --git a/src/runtime/internal/sys/nih.go b/src/runtime/internal/sys/nih.go
deleted file mode 100644
index 17eab67345..0000000000
--- a/src/runtime/internal/sys/nih.go
+++ /dev/null
@@ -1,41 +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 sys
-
-// NOTE: keep in sync with cmd/compile/internal/types.CalcSize
-// to make the compiler recognize this as an intrinsic type.
-type nih struct{}
-
-// NotInHeap is a type must never be allocated from the GC'd heap or on the stack,
-// and is called not-in-heap.
-//
-// Other types can embed NotInHeap to make it not-in-heap. Specifically, pointers
-// to these types must always fail the `runtime.inheap` check. The type may be used
-// for global variables, or for objects in unmanaged memory (e.g., allocated with
-// `sysAlloc`, `persistentalloc`, r`fixalloc`, or from a manually-managed span).
-//
-// Specifically:
-//
-// 1. `new(T)`, `make([]T)`, `append([]T, ...)` and implicit heap
-// allocation of T are disallowed. (Though implicit allocations are
-// disallowed in the runtime anyway.)
-//
-// 2. A pointer to a regular type (other than `unsafe.Pointer`) cannot be
-// converted to a pointer to a not-in-heap type, even if they have the
-// same underlying type.
-//
-// 3. Any type that containing a not-in-heap type is itself considered as not-in-heap.
-//
-// - Structs and arrays are not-in-heap if their elements are not-in-heap.
-// - Maps and channels contains no-in-heap types are disallowed.
-//
-// 4. Write barriers on pointers to not-in-heap types can be omitted.
-//
-// The last point is the real benefit of NotInHeap. The runtime uses
-// it for low-level internal structures to avoid memory barriers in the
-// scheduler and the memory allocator where they are illegal or simply
-// inefficient. This mechanism is reasonably safe and does not compromise
-// the readability of the runtime.
-type NotInHeap struct{ _ nih }
diff --git a/src/runtime/internal/sys/sys.go b/src/runtime/internal/sys/sys.go
deleted file mode 100644
index 694101d36f..0000000000
--- a/src/runtime/internal/sys/sys.go
+++ /dev/null
@@ -1,7 +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.
-
-// package sys contains system- and configuration- and architecture-specific
-// constants used by the runtime.
-package sys
diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go
index cbb4f67ee8..b24ebec27d 100644
--- a/src/runtime/malloc.go
+++ b/src/runtime/malloc.go
@@ -105,7 +105,7 @@ import (
"internal/goos"
"internal/runtime/atomic"
"internal/runtime/math"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
@@ -1555,7 +1555,7 @@ var persistentChunks *notInHeap
// sysStat must be non-nil.
//
// Consider marking persistentalloc'd types not in heap by embedding
-// runtime/internal/sys.NotInHeap.
+// internal/runtime/sys.NotInHeap.
func persistentalloc(size, align uintptr, sysStat *sysMemStat) unsafe.Pointer {
var p *notInHeap
systemstack(func() {
@@ -1697,7 +1697,7 @@ func (l *linearAlloc) alloc(size, align uintptr, sysStat *sysMemStat) unsafe.Poi
// like sysAlloc or persistentAlloc.
//
// In general, it's better to use real types which embed
-// runtime/internal/sys.NotInHeap, but this serves as a generic type
+// internal/runtime/sys.NotInHeap, but this serves as a generic type
// for situations where that isn't possible (like in the allocators).
//
// TODO: Use this as the return type of sysAlloc, persistentAlloc, etc?
diff --git a/src/runtime/mbitmap.go b/src/runtime/mbitmap.go
index 689fac103c..a25995f46f 100644
--- a/src/runtime/mbitmap.go
+++ b/src/runtime/mbitmap.go
@@ -59,7 +59,7 @@ import (
"internal/abi"
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mcache.go b/src/runtime/mcache.go
index e8da133a69..97a5f70e9c 100644
--- a/src/runtime/mcache.go
+++ b/src/runtime/mcache.go
@@ -6,7 +6,7 @@ package runtime
import (
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mcentral.go b/src/runtime/mcentral.go
index bf597e1936..1a4819bc2c 100644
--- a/src/runtime/mcentral.go
+++ b/src/runtime/mcentral.go
@@ -14,7 +14,7 @@ package runtime
import (
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
)
// Central list of free objects of a given size.
diff --git a/src/runtime/mcheckmark.go b/src/runtime/mcheckmark.go
index 258f889272..f5560cf50f 100644
--- a/src/runtime/mcheckmark.go
+++ b/src/runtime/mcheckmark.go
@@ -15,7 +15,7 @@ package runtime
import (
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mfinal.go b/src/runtime/mfinal.go
index 78313fb74c..a926a8ec35 100644
--- a/src/runtime/mfinal.go
+++ b/src/runtime/mfinal.go
@@ -10,7 +10,7 @@ import (
"internal/abi"
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mfixalloc.go b/src/runtime/mfixalloc.go
index 7760ada397..be977af737 100644
--- a/src/runtime/mfixalloc.go
+++ b/src/runtime/mfixalloc.go
@@ -9,7 +9,7 @@
package runtime
import (
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
@@ -27,7 +27,7 @@ import (
// smashed by freeing and reallocating.
//
// Consider marking fixalloc'd types not in heap by embedding
-// runtime/internal/sys.NotInHeap.
+// internal/runtime/sys.NotInHeap.
type fixalloc struct {
size uintptr
first func(arg, p unsafe.Pointer) // called first time p is returned
diff --git a/src/runtime/mgcmark.go b/src/runtime/mgcmark.go
index 61e917df41..9a48d15552 100644
--- a/src/runtime/mgcmark.go
+++ b/src/runtime/mgcmark.go
@@ -10,7 +10,7 @@ import (
"internal/abi"
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mgcscavenge.go b/src/runtime/mgcscavenge.go
index 4f0bd9c28d..3d869ecdd2 100644
--- a/src/runtime/mgcscavenge.go
+++ b/src/runtime/mgcscavenge.go
@@ -93,7 +93,7 @@ package runtime
import (
"internal/goos"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mgcstack.go b/src/runtime/mgcstack.go
index f4a83f5f59..bc5911f141 100644
--- a/src/runtime/mgcstack.go
+++ b/src/runtime/mgcstack.go
@@ -96,7 +96,7 @@ package runtime
import (
"internal/goarch"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mgcwork.go b/src/runtime/mgcwork.go
index b91a6bd464..2d66fa4002 100644
--- a/src/runtime/mgcwork.go
+++ b/src/runtime/mgcwork.go
@@ -7,7 +7,7 @@ package runtime
import (
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mheap.go b/src/runtime/mheap.go
index 35fd08af50..e4b1fa0574 100644
--- a/src/runtime/mheap.go
+++ b/src/runtime/mheap.go
@@ -12,7 +12,7 @@ import (
"internal/cpu"
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mpagecache.go b/src/runtime/mpagecache.go
index 245b0cbfef..0ed3e80c30 100644
--- a/src/runtime/mpagecache.go
+++ b/src/runtime/mpagecache.go
@@ -5,7 +5,7 @@
package runtime
import (
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/mpallocbits.go b/src/runtime/mpallocbits.go
index d8a9d25789..e8e70f36be 100644
--- a/src/runtime/mpallocbits.go
+++ b/src/runtime/mpallocbits.go
@@ -5,7 +5,7 @@
package runtime
import (
- "runtime/internal/sys"
+ "internal/runtime/sys"
)
// pageBits is a bitmap representing one bit per page in a palloc chunk.
diff --git a/src/runtime/mprof.go b/src/runtime/mprof.go
index 006274757e..a9adc7b6f7 100644
--- a/src/runtime/mprof.go
+++ b/src/runtime/mprof.go
@@ -12,7 +12,7 @@ import (
"internal/goarch"
"internal/profilerecord"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/netpoll.go b/src/runtime/netpoll.go
index 7b37d91b24..36b9edfe21 100644
--- a/src/runtime/netpoll.go
+++ b/src/runtime/netpoll.go
@@ -8,7 +8,7 @@ package runtime
import (
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
@@ -714,7 +714,7 @@ func (c *pollCache) alloc() *pollDesc {
// makeArg converts pd to an interface{}.
// makeArg does not do any allocation. Normally, such
// a conversion requires an allocation because pointers to
-// types which embed runtime/internal/sys.NotInHeap (which pollDesc is)
+// types which embed internal/runtime/sys.NotInHeap (which pollDesc is)
// must be stored in interfaces indirectly. See issue 42076.
func (pd *pollDesc) makeArg() (i any) {
x := (*eface)(unsafe.Pointer(&i))
diff --git a/src/runtime/panic.go b/src/runtime/panic.go
index 98e96b12bf..bd1ea096aa 100644
--- a/src/runtime/panic.go
+++ b/src/runtime/panic.go
@@ -8,8 +8,8 @@ import (
"internal/abi"
"internal/goarch"
"internal/runtime/atomic"
+ "internal/runtime/sys"
"internal/stringslite"
- "runtime/internal/sys"
"unsafe"
)
diff --git a/src/runtime/proc.go b/src/runtime/proc.go
index c4f175b0b7..2cf8a31971 100644
--- a/src/runtime/proc.go
+++ b/src/runtime/proc.go
@@ -11,8 +11,8 @@ import (
"internal/goos"
"internal/runtime/atomic"
"internal/runtime/exithook"
+ "internal/runtime/sys"
"internal/stringslite"
- "runtime/internal/sys"
"unsafe"
)
diff --git a/src/runtime/runtime2.go b/src/runtime/runtime2.go
index 4a78963961..62ed77aae5 100644
--- a/src/runtime/runtime2.go
+++ b/src/runtime/runtime2.go
@@ -9,7 +9,7 @@ import (
"internal/chacha8rand"
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/signal_arm64.go b/src/runtime/signal_arm64.go
index 4a96b3c2e7..af7d29f9de 100644
--- a/src/runtime/signal_arm64.go
+++ b/src/runtime/signal_arm64.go
@@ -9,7 +9,7 @@ package runtime
import (
"internal/abi"
"internal/goarch"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/signal_linux_s390x.go b/src/runtime/signal_linux_s390x.go
index 18c3b115ef..54e9d1fb9d 100644
--- a/src/runtime/signal_linux_s390x.go
+++ b/src/runtime/signal_linux_s390x.go
@@ -7,7 +7,7 @@ package runtime
import (
"internal/abi"
"internal/goarch"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/signal_mipsx.go b/src/runtime/signal_mipsx.go
index ba92655152..924e654c6c 100644
--- a/src/runtime/signal_mipsx.go
+++ b/src/runtime/signal_mipsx.go
@@ -8,7 +8,7 @@ package runtime
import (
"internal/abi"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/signal_ppc64x.go b/src/runtime/signal_ppc64x.go
index b5722f99c6..20f874c2ec 100644
--- a/src/runtime/signal_ppc64x.go
+++ b/src/runtime/signal_ppc64x.go
@@ -8,7 +8,7 @@ package runtime
import (
"internal/abi"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/signal_unix.go b/src/runtime/signal_unix.go
index 8ba498bdb2..a42972bb35 100644
--- a/src/runtime/signal_unix.go
+++ b/src/runtime/signal_unix.go
@@ -9,7 +9,7 @@ package runtime
import (
"internal/abi"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/signal_windows.go b/src/runtime/signal_windows.go
index 4b7960c1f0..b0c653ee46 100644
--- a/src/runtime/signal_windows.go
+++ b/src/runtime/signal_windows.go
@@ -6,7 +6,7 @@ package runtime
import (
"internal/abi"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/slice.go b/src/runtime/slice.go
index 65883ea2f3..ecc2e2921b 100644
--- a/src/runtime/slice.go
+++ b/src/runtime/slice.go
@@ -8,7 +8,7 @@ import (
"internal/abi"
"internal/goarch"
"internal/runtime/math"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
@@ -18,7 +18,7 @@ type slice struct {
cap int
}
-// A notInHeapSlice is a slice backed by runtime/internal/sys.NotInHeap memory.
+// A notInHeapSlice is a slice backed by internal/runtime/sys.NotInHeap memory.
type notInHeapSlice struct {
array *notInHeap
len int
diff --git a/src/runtime/stack.go b/src/runtime/stack.go
index cdf859a7ff..bdfeb21c18 100644
--- a/src/runtime/stack.go
+++ b/src/runtime/stack.go
@@ -10,7 +10,7 @@ import (
"internal/goarch"
"internal/goos"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/stkframe.go b/src/runtime/stkframe.go
index 42b6947751..2bab5a3a0e 100644
--- a/src/runtime/stkframe.go
+++ b/src/runtime/stkframe.go
@@ -7,7 +7,7 @@ package runtime
import (
"internal/abi"
"internal/goarch"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/symtab.go b/src/runtime/symtab.go
index 10cdcf9c6e..f889d66992 100644
--- a/src/runtime/symtab.go
+++ b/src/runtime/symtab.go
@@ -8,7 +8,7 @@ import (
"internal/abi"
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/symtabinl_test.go b/src/runtime/symtabinl_test.go
index 3c7cb2e595..db682e0c9c 100644
--- a/src/runtime/symtabinl_test.go
+++ b/src/runtime/symtabinl_test.go
@@ -6,8 +6,8 @@ package runtime
import (
"internal/abi"
+ "internal/runtime/sys"
"internal/stringslite"
- "runtime/internal/sys"
)
func XTestInlineUnwinder(t TestingT) {
diff --git a/src/runtime/sys_wasm.go b/src/runtime/sys_wasm.go
index 27f9432bd4..f88b992e9c 100644
--- a/src/runtime/sys_wasm.go
+++ b/src/runtime/sys_wasm.go
@@ -6,7 +6,7 @@ package runtime
import (
"internal/goarch"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/time.go b/src/runtime/time.go
index fc664f49eb..79f0514c6e 100644
--- a/src/runtime/time.go
+++ b/src/runtime/time.go
@@ -9,7 +9,7 @@ package runtime
import (
"internal/abi"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/traceallocfree.go b/src/runtime/traceallocfree.go
index e6a2a79c69..985d90eacb 100644
--- a/src/runtime/traceallocfree.go
+++ b/src/runtime/traceallocfree.go
@@ -8,7 +8,7 @@ package runtime
import (
"internal/abi"
- "runtime/internal/sys"
+ "internal/runtime/sys"
)
// Batch type values for the alloc/free experiment.
diff --git a/src/runtime/traceback.go b/src/runtime/traceback.go
index 03c02f7771..8946ec2528 100644
--- a/src/runtime/traceback.go
+++ b/src/runtime/traceback.go
@@ -8,8 +8,8 @@ import (
"internal/abi"
"internal/bytealg"
"internal/goarch"
+ "internal/runtime/sys"
"internal/stringslite"
- "runtime/internal/sys"
"unsafe"
)
diff --git a/src/runtime/tracebuf.go b/src/runtime/tracebuf.go
index db4adf53e9..908a63d273 100644
--- a/src/runtime/tracebuf.go
+++ b/src/runtime/tracebuf.go
@@ -7,7 +7,7 @@
package runtime
import (
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/traceevent.go b/src/runtime/traceevent.go
index 2a869fb515..9adbc52fd3 100644
--- a/src/runtime/traceevent.go
+++ b/src/runtime/traceevent.go
@@ -8,7 +8,7 @@ package runtime
import (
"internal/abi"
- "runtime/internal/sys"
+ "internal/runtime/sys"
)
// Event types in the trace, args are given in square brackets.
diff --git a/src/runtime/tracemap.go b/src/runtime/tracemap.go
index 5b2718c8d6..9efa325c11 100644
--- a/src/runtime/tracemap.go
+++ b/src/runtime/tracemap.go
@@ -19,7 +19,7 @@ import (
"internal/cpu"
"internal/goarch"
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)
diff --git a/src/runtime/traceregion.go b/src/runtime/traceregion.go
index 43eef9c92b..b45093ec86 100644
--- a/src/runtime/traceregion.go
+++ b/src/runtime/traceregion.go
@@ -8,7 +8,7 @@ package runtime
import (
"internal/runtime/atomic"
- "runtime/internal/sys"
+ "internal/runtime/sys"
"unsafe"
)