• Austin Clements's avatar
    cmd/compile: add go:nowritebarrierrec annotation · 3a765430
    Austin Clements authored
    This introduces a recursive variant of the go:nowritebarrier
    annotation that prohibits write barriers not only in the annotated
    function, but in all functions it calls, recursively. The error
    message gives the shortest call stack from the annotated function to
    the function containing the prohibited write barrier, including the
    names of the functions and the line numbers of the calls.
    
    To demonstrate the annotation, we apply it to gcmarkwb_m, the write
    barrier itself.
    
    This is a new annotation rather than a modification of the existing
    go:nowritebarrier annotation because, for better or worse, there are
    many go:nowritebarrier functions that do call functions with write
    barriers. In most of these cases this is benign because the annotation
    was conservative, but it prohibits simply coopting the existing
    annotation.
    
    Change-Id: I225ca483c8f699e8436373ed96349e80ca2c2479
    Reviewed-on: https://go-review.googlesource.com/16554Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    3a765430
mbarrier.go 10.2 KB