diff options
Diffstat (limited to 'libgo/go/runtime/mstats.go')
-rw-r--r-- | libgo/go/runtime/mstats.go | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/libgo/go/runtime/mstats.go b/libgo/go/runtime/mstats.go index 2d4cdbe..4e2c66ce 100644 --- a/libgo/go/runtime/mstats.go +++ b/libgo/go/runtime/mstats.go @@ -513,6 +513,12 @@ func readGCStats_m(pauses *[]uint64) { //go:nowritebarrier func updatememstats() { + // Flush mcaches to mcentral before doing anything else. + // + // Flushing to the mcentral may in general cause stats to + // change as mcentral data structures are manipulated. + systemstack(flushallmcaches) + memstats.mcache_inuse = uint64(mheap_.cachealloc.inuse) memstats.mspan_inuse = uint64(mheap_.spanalloc.inuse) memstats.sys = memstats.heap_sys + memstats.stacks_sys + memstats.mspan_sys + @@ -523,7 +529,7 @@ func updatememstats() { // Calculate memory allocator stats. // During program execution we only count number of frees and amount of freed memory. - // Current number of alive object in the heap and amount of alive heap memory + // Current number of alive objects in the heap and amount of alive heap memory // are calculated by scanning all spans. // Total number of mallocs is calculated as number of frees plus number of alive objects. // Similarly, total amount of allocated memory is calculated as amount of freed memory @@ -537,9 +543,6 @@ func updatememstats() { memstats.by_size[i].nfree = 0 } - // Flush mcache's to mcentral. - systemstack(flushallmcaches) - // Aggregate local stats. cachestats() |