• Russ Cox's avatar
    cmd/gc, runtime: refactor interface inlining decision into compiler · 1806a573
    Russ Cox authored
    We need to change the interface value representation for
    concurrent garbage collection, so that there is no ambiguity
    about whether the data word holds a pointer or scalar.
    
    This CL does NOT make any representation changes.
    
    Instead, it removes representation assumptions from
    various pieces of code throughout the tree.
    The isdirectiface function in cmd/gc/subr.c is now
    the only place that decides that policy.
    The policy propagates out from there in the reflect
    metadata, as a new flag in the internal kind value.
    
    A follow-up CL will change the representation by
    changing the isdirectiface function. If that CL causes
    problems, it will be easy to roll back.
    
    Update #8405.
    
    LGTM=iant
    R=golang-codereviews, iant
    CC=golang-codereviews, r
    https://golang.org/cl/129090043
    1806a573
reflect.c 34 KB