From: Austin Clements Date: Fri, 13 Jan 2017 20:32:53 +0000 (-0500) Subject: runtime: make _MaxMem an untyped constant X-Git-Tag: go1.9beta1~1699 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=efb5eae3cf1c5f9be8cc5d4c85a7314204513b4c;p=gostls13.git runtime: make _MaxMem an untyped constant Currently _MaxMem is a uintptr, which is going to complicate some further changes. Make it untyped so we'll be able to do untyped math on it before truncating it to a uintptr. The runtime assembly is identical before and after this change on {linux,windows}/{amd64,386}. Updates #18651. Change-Id: I0f64511faa9e0aa25179a556ab9f185ebf8c9cf8 Reviewed-on: https://go-review.googlesource.com/35251 Run-TryBot: Austin Clements TryBot-Result: Gobot Gobot Reviewed-by: Rick Hudson Reviewed-by: David Crawshaw --- diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go index da39dac510..37e6b4b2ef 100644 --- a/src/runtime/malloc.go +++ b/src/runtime/malloc.go @@ -148,7 +148,11 @@ const ( _MHeapMap_TotalBits = (_64bit*sys.GoosWindows)*35 + (_64bit*(1-sys.GoosWindows)*(1-sys.GoosDarwin*sys.GoarchArm64))*39 + sys.GoosDarwin*sys.GoarchArm64*31 + (1-_64bit)*(32-(sys.GoarchMips+sys.GoarchMipsle)) _MHeapMap_Bits = _MHeapMap_TotalBits - _PageShift - _MaxMem = uintptr(1<<_MHeapMap_TotalBits - 1) + // _MaxMem is the maximum heap arena size minus 1. + // + // On 32-bit, this is also the maximum heap pointer value, + // since the arena starts at address 0. + _MaxMem = 1<<_MHeapMap_TotalBits - 1 // Max number of threads to run garbage collection. // 2, 3, and 4 are all plausible maximums depending