• Dmitriy Vyukov's avatar
    runtime: convert forcegc helper to Go · 42486ffc
    Dmitriy Vyukov authored
    Also fix a bunch of bugs:
    1. Accesses to last_gc must be atomic (it's int64).
    2. last_gc still can be 0 during first checks in sysmon, check for 0.
    3. forcegc.g can be unitialized when sysmon accesses it:
            forcegc.g is initialized by main goroutine (forcegc.g = newproc1(...)),
            and main goroutine is unsynchronized with both sysmon and forcegc goroutine.
            Initialize forcegc.g in the forcegc goroutine itself instead.
    
    LGTM=khr
    R=golang-codereviews, khr
    CC=golang-codereviews, rsc
    https://golang.org/cl/136770043
    42486ffc
mgc0.c 56.3 KB