From 8cda97ab52eae061d34167a1f786b43a21e7521b Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 28 Feb 2018 01:39:03 +0000 Subject: [PATCH] runtime: update AIX memory allocation for new versions Reviewed-on: https://go-review.googlesource.com/97357 From-SVN: r258052 --- gcc/go/gofrontend/MERGE | 2 +- libgo/go/runtime/malloc.go | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index dae8040..f23eef8 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -bd7fc3c85d874344b18bbb0a738ec94dfb43794b +821960465883fbdd96568f2325f55ee4b05de1cb The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/libgo/go/runtime/malloc.go b/libgo/go/runtime/malloc.go index c27aa48..1405a54 100644 --- a/libgo/go/runtime/malloc.go +++ b/libgo/go/runtime/malloc.go @@ -296,8 +296,8 @@ func mallocinit() { // allocation at 0x40 << 32 because when using 4k pages with 3-level // translation buffers, the user address space is limited to 39 bits // On darwin/arm64, the address space is even smaller. - // On AIX, mmap adresses range start at 0x07000000_00000000 for 64 bits - // processes. + // On AIX, mmap adresses range starts at 0x0700000000000000 for 64-bit + // processes. The new address space allocator starts at 0x0A00000000000000. arenaSize := round(_MaxMem, _PageSize) pSize = bitmapSize + spansSize + arenaSize + _PageSize for i := 0; i <= 0x7f; i++ { @@ -307,13 +307,16 @@ func mallocinit() { case GOARCH == "arm64": p = uintptr(i)<<40 | uintptrMask&(0x0040<<32) case GOOS == "aix": - i = 1 - p = uintptr(i)<<32 | uintptrMask&(0x70<<52) + if i == 0 { + p = uintptrMask&(1<<32) | uintptrMask&(0xa0<<52) + } else { + p = uintptr(i)<<32 | uintptrMask&(0x70<<52) + } default: p = uintptr(i)<<40 | uintptrMask&(0x00c0<<32) } p = uintptr(sysReserve(unsafe.Pointer(p), pSize, &reserved)) - if p != 0 || GOOS == "aix" { // Useless to loop on AIX, as i is forced to 1 + if p != 0 { break } } -- 2.7.4