aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/malloc.go
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2017-06-14 13:53:57 -0400
committerRuss Cox <rsc@golang.org>2017-06-14 13:53:57 -0400
commit8a5ef1501dee0715093e87cdc1c9b6becb81c882 (patch)
tree85a4b4d1e5633edb79567d9deb3bbbf02ee9383e /src/runtime/malloc.go
parent1ba29926f3bfd245d46cf1f287716290bc2f1034 (diff)
parent352996a381701cfa0c16e8de29cbde8f3922182f (diff)
downloadgo-8a5ef1501dee0715093e87cdc1c9b6becb81c882.tar.gz
go-8a5ef1501dee0715093e87cdc1c9b6becb81c882.zip
[dev.typealias] all: merge go1.8.3 into dev.typealiasdev.typealias
352996a381 (tag: go1.8.3) [release-branch.go1.8] go1.8.3 bb5055d6f1 [release-branch.go1.8] doc: document go1.8.3 439c0c8be8 [release-branch.go1.8] cmd/compile: don't move spills to loop exits where the spill is dead e396667ba3 [release-branch.go1.8] cmd/compile: zero ambiguously live variables at VARKILLs daf6706f37 [release-branch.go1.8] runtime: use pselect6 for usleep on linux/386 958c64bbab [release-branch.go1.8] runtime: use pselect6 for usleep on linux/amd64 and linux/arm 195e20a976 [release-branch.go1.8] cmd/compile: ignore types when considering tuple select for CSE f55bc1c4eb [release-branch.go1.8] net/http: update bundled http2 for gracefulShutdownCh lock contention slowdown 51f508bb4a [release-branch.go1.8] cmd/compile: fix s390x unsigned comparison constant merging rules 243dee1737 [release-branch.go1.8] cmd/go: if we get a C compiler dwarf2 warning, try without -g a43c0d2dc8 [release-branch.go1.8] runtime: don't corrupt arena bounds on low mmap 1054085dcf [release-branch.go1.8] cmd/compile: fix store chain in schedule pass 18a13d373a [release-branch.go1.8] runtime: doubly fix "double wakeup" panic 6efa2f22ac [release-branch.go1.8] database/sql: ensure releaseConn is defined before a possible close fb9770f09b [release-branch.go1.8] runtime: print debug info on "base out of range" b6a8fc8d8c [release-branch.go1.8] doc: remove mentions of yacc tool 59870f9e19 (tag: go1.8.2) [release-branch.go1.8] go1.8.2 c9688ddb6b [release-branch.go1.8] doc: document go1.8.2 and go1.7.6 38d35f49e7 [release-branch.go1.8] crypto/elliptic: fix carry bug in x86-64 P-256 implementation. Change-Id: I2aa0eab7a990d24e25809fb13ce6cb031104f474
Diffstat (limited to 'src/runtime/malloc.go')
-rw-r--r--src/runtime/malloc.go14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/runtime/malloc.go b/src/runtime/malloc.go
index da39dac510..6f07731a49 100644
--- a/src/runtime/malloc.go
+++ b/src/runtime/malloc.go
@@ -400,10 +400,12 @@ func (h *mheap) sysAlloc(n uintptr) unsafe.Pointer {
if p == 0 {
return nil
}
+ // p can be just about anywhere in the address
+ // space, including before arena_end.
if p == h.arena_end {
h.arena_end = new_end
h.arena_reserved = reserved
- } else if h.arena_start <= p && p+p_size-h.arena_start-1 <= _MaxArena32 {
+ } else if h.arena_end < p && p+p_size-h.arena_start-1 <= _MaxArena32 {
// Keep everything page-aligned.
// Our pages are bigger than hardware pages.
h.arena_end = p + p_size
@@ -413,6 +415,16 @@ func (h *mheap) sysAlloc(n uintptr) unsafe.Pointer {
h.arena_used = used
h.arena_reserved = reserved
} else {
+ // We got a mapping, but it's not
+ // linear with our current arena, so
+ // we can't use it.
+ //
+ // TODO: Make it possible to allocate
+ // from this. We can't decrease
+ // arena_used, but we could introduce
+ // a new variable for the current
+ // allocation position.
+
// We haven't added this allocation to
// the stats, so subtract it from a
// fake stat (but avoid underflow).