runtime: scan write barrier buffer conservatively
authorIan Lance Taylor <ian@gcc.gnu.org>
Sat, 17 Aug 2019 04:35:37 +0000 (04:35 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Sat, 17 Aug 2019 04:35:37 +0000 (04:35 +0000)
commit777c02825229f14cf91c6044827ea42a77ded4a3
tree3dd9baeb70c0752889ee56008eb3642fc4d3e76a
parent7aad42b91897c6b9fa3047efdd8d966a2788c159
runtime: scan write barrier buffer conservatively

    In gccgo, we insert the write barriers in the frontend, and so we
    cannot completely prevent write barriers on stack writes. So it
    is possible for a bad pointer appearing in the write barrier
    buffer. When flushing the write barrier, treat it the same as
    sacnning the stack. In particular, don't mark a pointer if it
    does not point to an allocated object. We already have similar
    logic in greyobject. With this, hopefully, we can prevent an
    unallocated object from being marked completely.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/190599

From-SVN: r274598
gcc/go/gofrontend/MERGE
libgo/go/runtime/mwbbuf.go