• Russ Cox's avatar
    runtime: remove type-punning for Type.gc[0], gc[1] · 18172c42
    Russ Cox authored
    Depending on flags&KindGCProg,
    gc[0] and gc[1] are either pointers or inlined bitmap bits.
    That's not compatible with a precise garbage collector:
    it needs to be always pointers or never pointers.
    
    Change the inlined bitmap case to store a pointer to an
    out-of-line bitmap in gc[0]. The out-of-line bitmaps are
    dedup'ed, so that for example all pointer types share the
    same out-of-line bitmap.
    
    Fixes #8864.
    
    LGTM=r
    R=golang-codereviews, dvyukov, r
    CC=golang-codereviews, iant, khr, rlh
    https://golang.org/cl/155820043
    18172c42
malloc.go 23.4 KB