• Austin Clements's avatar
    runtime: run concurrent mark phase on regular stack · fa2f9c2c
    Austin Clements authored
    Currently, the GC's concurrent mark phase runs on the system
    stack. There's no need to do this, and running it this way ties up the
    entire M and P running the GC by preventing the scheduler from
    preempting the GC even during concurrent mark.
    
    Fix this by running concurrent mark on the regular G stack. It's still
    non-preemptible because we also set preemptoff around the whole GC
    process, but this moves us closer to making it preemptible.
    
    Change-Id: Ia9f1245e299b8c5c513a4b1e3ef13eaa35ac5e73
    Reviewed-on: https://go-review.googlesource.com/7730Reviewed-by: default avatarRick Hudson <rlh@golang.org>
    fa2f9c2c
mgc.go 26.8 KB