• 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
go.h 35.9 KB