Commit 3399fd25 authored by Austin Clements's avatar Austin Clements

runtime: remove unused gcstats

The gcstats structure is no longer consumed by anything and no longer
tracks statistics that are particularly relevant to the concurrent
garbage collector. Remove it. (Having statistics is probably a good
idea, but these aren't the stats we need these days and we don't have
a way to get them out of the runtime.)

In preparation for #13613.

Change-Id: Ib63e2f9067850668f9dcbfd4ed89aab4a6622c3f
Reviewed-on: https://go-review.googlesource.com/34936
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: default avatarRick Hudson <rlh@golang.org>
parent 7523baed
...@@ -653,7 +653,7 @@ func writeheapdump_m(fd uintptr) { ...@@ -653,7 +653,7 @@ func writeheapdump_m(fd uintptr) {
// Update stats so we can dump them. // Update stats so we can dump them.
// As a side effect, flushes all the MCaches so the MSpan.freelist // As a side effect, flushes all the MCaches so the MSpan.freelist
// lists contain all the free objects. // lists contain all the free objects.
updatememstats(nil) updatememstats()
// Set dump file. // Set dump file.
dumpfd = fd dumpfd = fd
......
...@@ -397,15 +397,11 @@ func getfull() *workbuf { ...@@ -397,15 +397,11 @@ func getfull() *workbuf {
if work.nwait == work.nproc && work.markrootNext >= work.markrootJobs { if work.nwait == work.nproc && work.markrootNext >= work.markrootJobs {
return nil return nil
} }
_g_ := getg()
if i < 10 { if i < 10 {
_g_.m.gcstats.nprocyield++
procyield(20) procyield(20)
} else if i < 20 { } else if i < 20 {
_g_.m.gcstats.nosyield++
osyield() osyield()
} else { } else {
_g_.m.gcstats.nsleep++
usleep(100) usleep(100)
} }
} }
...@@ -419,9 +415,6 @@ func handoff(b *workbuf) *workbuf { ...@@ -419,9 +415,6 @@ func handoff(b *workbuf) *workbuf {
b.nobj -= n b.nobj -= n
b1.nobj = n b1.nobj = n
memmove(unsafe.Pointer(&b1.obj[0]), unsafe.Pointer(&b.obj[b.nobj]), uintptr(n)*unsafe.Sizeof(b1.obj[0])) memmove(unsafe.Pointer(&b1.obj[0]), unsafe.Pointer(&b.obj[b.nobj]), uintptr(n)*unsafe.Sizeof(b1.obj[0]))
_g_ := getg()
_g_.m.gcstats.nhandoff++
_g_.m.gcstats.nhandoffcnt += uint64(n)
// Put b on full list - let first half of b get stolen. // Put b on full list - let first half of b get stolen.
putfull(b) putfull(b)
......
...@@ -452,7 +452,7 @@ func ReadMemStats(m *MemStats) { ...@@ -452,7 +452,7 @@ func ReadMemStats(m *MemStats) {
} }
func readmemstats_m(stats *MemStats) { func readmemstats_m(stats *MemStats) {
updatememstats(nil) updatememstats()
// The size of the trailing by_size array differs between // The size of the trailing by_size array differs between
// mstats and MemStats. NumSizeClasses was changed, but we // mstats and MemStats. NumSizeClasses was changed, but we
...@@ -506,21 +506,7 @@ func readGCStats_m(pauses *[]uint64) { ...@@ -506,21 +506,7 @@ func readGCStats_m(pauses *[]uint64) {
} }
//go:nowritebarrier //go:nowritebarrier
func updatememstats(stats *gcstats) { func updatememstats() {
if stats != nil {
*stats = gcstats{}
}
for mp := allm; mp != nil; mp = mp.alllink {
if stats != nil {
src := (*[unsafe.Sizeof(gcstats{}) / 8]uint64)(unsafe.Pointer(&mp.gcstats))
dst := (*[unsafe.Sizeof(gcstats{}) / 8]uint64)(unsafe.Pointer(stats))
for i, v := range src {
dst[i] += v
}
mp.gcstats = gcstats{}
}
}
memstats.mcache_inuse = uint64(mheap_.cachealloc.inuse) memstats.mcache_inuse = uint64(mheap_.cachealloc.inuse)
memstats.mspan_inuse = uint64(mheap_.spanalloc.inuse) memstats.mspan_inuse = uint64(mheap_.spanalloc.inuse)
memstats.sys = memstats.heap_sys + memstats.stacks_sys + memstats.mspan_sys + memstats.sys = memstats.heap_sys + memstats.stacks_sys + memstats.mspan_sys +
......
...@@ -292,16 +292,6 @@ type sudog struct { ...@@ -292,16 +292,6 @@ type sudog struct {
c *hchan // channel c *hchan // channel
} }
type gcstats struct {
// the struct must consist of only uint64's,
// because it is casted to uint64[].
nhandoff uint64
nhandoffcnt uint64
nprocyield uint64
nosyield uint64
nsleep uint64
}
type libcall struct { type libcall struct {
fn uintptr fn uintptr
n uintptr // number of parameters n uintptr // number of parameters
...@@ -436,7 +426,6 @@ type m struct { ...@@ -436,7 +426,6 @@ type m struct {
fflag uint32 // floating point compare flags fflag uint32 // floating point compare flags
locked uint32 // tracking for lockosthread locked uint32 // tracking for lockosthread
nextwaitm uintptr // next m waiting for lock nextwaitm uintptr // next m waiting for lock
gcstats gcstats
needextram bool needextram bool
traceback uint8 traceback uint8
waitunlockf unsafe.Pointer // todo go func(*g, unsafe.pointer) bool waitunlockf unsafe.Pointer // todo go func(*g, unsafe.pointer) bool
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment