]> Cypherpunks repositories - gostls13.git/commit
cmd/5g, cmd/5l, cmd/6g, cmd/6l, cmd/8g, cmd/8l, cmd/gc, runtime: generate pointer...
authorCarl Shapiro <cshapiro@google.com>
Fri, 6 Dec 2013 01:35:22 +0000 (17:35 -0800)
committerCarl Shapiro <cshapiro@google.com>
Fri, 6 Dec 2013 01:35:22 +0000 (17:35 -0800)
commitf056daf075f303918343fd79af7ee0bfdcf6738e
tree0b281662952ec98f0f694e9b496935667d44e260
parentbb55b9c6aec020a0aead564e44b79cae09a888bd
cmd/5g, cmd/5l, cmd/6g, cmd/6l, cmd/8g, cmd/8l, cmd/gc, runtime: generate pointer maps by liveness analysis

This change allows the garbage collector to examine stack
slots that are determined as live and containing a pointer
value by the garbage collector.  This results in a mean
reduction of 65% in the number of stack slots scanned during
an invocation of "GOGC=1 all.bash".

Unfortunately, this does not yet allow garbage collection to
be precise for the stack slots computed as live.  Pointers
confound the determination of what definitions reach a given
instruction.  In general, this problem is not solvable without
runtime cost but some advanced cooperation from the compiler
might mitigate common cases.

R=golang-dev, rsc, cshapiro
CC=golang-dev
https://golang.org/cl/14430048
25 files changed:
src/cmd/5g/ggen.c
src/cmd/5g/peep.c
src/cmd/5g/prog.c
src/cmd/5g/reg.c
src/cmd/5l/5.out.h
src/cmd/6g/ggen.c
src/cmd/6g/prog.c
src/cmd/6g/reg.c
src/cmd/6l/6.out.h
src/cmd/6l/optab.c
src/cmd/8g/ggen.c
src/cmd/8g/prog.c
src/cmd/8g/reg.c
src/cmd/8l/8.out.h
src/cmd/8l/optab.c
src/cmd/cc/pgen.c
src/cmd/dist/build.c
src/cmd/gc/array.c [new file with mode: 0644]
src/cmd/gc/bv.c
src/cmd/gc/gen.c
src/cmd/gc/go.h
src/cmd/gc/pgen.c
src/cmd/gc/plive.c [new file with mode: 0644]
src/pkg/runtime/funcdata.h
src/pkg/runtime/mgc0.c