• Dmitriy Vyukov's avatar
    runtime: simpler and faster GC · cd17a717
    Dmitriy Vyukov authored
    Implement the design described in:
    https://docs.google.com/document/d/1v4Oqa0WwHunqlb8C3ObL_uNQw3DfSY-ztoA-4wWbKcg/pub
    
    Summary of the changes:
    GC uses "2-bits per word" pointer type info embed directly into bitmap.
    Scanning of stacks/data/heap is unified.
    The old spans types go away.
    Compiler generates "sparse" 4-bits type info for GC (directly for GC bitmap).
    Linker generates "dense" 2-bits type info for data/bss (the same as stacks use).
    
    Summary of results:
    -1680 lines of code total (-1000+ in mgc0.c only)
    -25% memory consumption
    -3-7% binary size
    -15% GC pause reduction
    -7% run time reduction
    
    LGTM=khr
    R=golang-codereviews, rsc, christoph, khr
    CC=golang-codereviews, rlh
    https://golang.org/cl/106260045
    cd17a717
Name
Last commit
Last update
..
cmd Loading commit data...
lib9 Loading commit data...
libbio Loading commit data...
liblink Loading commit data...
pkg Loading commit data...
Make.dist Loading commit data...
all.bash Loading commit data...
all.bat Loading commit data...
all.rc Loading commit data...
androidtest.bash Loading commit data...
clean.bash Loading commit data...
clean.bat Loading commit data...
clean.rc Loading commit data...
make.bash Loading commit data...
make.bat Loading commit data...
make.rc Loading commit data...
nacltest.bash Loading commit data...
race.bash Loading commit data...
race.bat Loading commit data...
run.bash Loading commit data...
run.bat Loading commit data...
run.rc Loading commit data...
sudo.bash Loading commit data...