mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
runtime: change maxSearchAddr into a helper function
This avoids a dependency on the compiler statically initializing maxSearchAddr, which is necessary so we can disable the (overly aggressive and spec non-conforming) optimizations in cmd/compile and gccgo. Updates #51913. Change-Id: I424e62c81c722bb179ed8d2d8e188274a1aeb7b6 Reviewed-on: https://go-review.googlesource.com/c/go/+/396194 Reviewed-by: Michael Knyszek <mknyszek@google.com> Reviewed-by: Austin Clements <austin@google.com> Run-TryBot: Matthew Dempsky <mdempsky@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
parent
f12461cb0f
commit
ccb798741b
2 changed files with 12 additions and 7 deletions
|
|
@ -83,11 +83,16 @@ const (
|
|||
pallocChunksL1Shift = pallocChunksL2Bits
|
||||
)
|
||||
|
||||
// Maximum searchAddr value, which indicates that the heap has no free space.
|
||||
// maxSearchAddr returns the maximum searchAddr value, which indicates
|
||||
// that the heap has no free space.
|
||||
//
|
||||
// We alias maxOffAddr just to make it clear that this is the maximum address
|
||||
// This function exists just to make it clear that this is the maximum address
|
||||
// for the page allocator's search space. See maxOffAddr for details.
|
||||
var maxSearchAddr = maxOffAddr
|
||||
//
|
||||
// It's a function (rather than a variable) because it needs to be
|
||||
// usable before package runtime's dynamic initialization is complete.
|
||||
// See #51913 for details.
|
||||
func maxSearchAddr() offAddr { return maxOffAddr }
|
||||
|
||||
// Global chunk index.
|
||||
//
|
||||
|
|
@ -319,7 +324,7 @@ func (p *pageAlloc) init(mheapLock *mutex, sysStat *sysMemStat) {
|
|||
p.sysInit()
|
||||
|
||||
// Start with the searchAddr in a state indicating there's no free memory.
|
||||
p.searchAddr = maxSearchAddr
|
||||
p.searchAddr = maxSearchAddr()
|
||||
|
||||
// Set the mheapLock.
|
||||
p.mheapLock = mheapLock
|
||||
|
|
@ -745,7 +750,7 @@ nextLevel:
|
|||
}
|
||||
if l == 0 {
|
||||
// We're at level zero, so that means we've exhausted our search.
|
||||
return 0, maxSearchAddr
|
||||
return 0, maxSearchAddr()
|
||||
}
|
||||
|
||||
// We're not at level zero, and we exhausted the level we were looking in.
|
||||
|
|
@ -839,7 +844,7 @@ func (p *pageAlloc) alloc(npages uintptr) (addr uintptr, scav uintptr) {
|
|||
// exhausted. Otherwise, the heap still might have free
|
||||
// space in it, just not enough contiguous space to
|
||||
// accommodate npages.
|
||||
p.searchAddr = maxSearchAddr
|
||||
p.searchAddr = maxSearchAddr()
|
||||
}
|
||||
return 0, 0
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue