Open
Description
Go 1.14 introduces asynchronous preemption so that tight loops can be preempted (#10958). However, there are still several loose ends to tie up. This is a general bug to keep track of remaining work:
- Support on all possible platforms (js/wasm is not currently possible)
- Redo unsafe-point representation so we can eliminate register maps (CL 230544)
- Remove register maps and extra stack maps (after redesigning debug call injection) (CL 230544)
- Possibly incorporate @cherrymui's sequence restarting (CL 208126)
- Attach unsafety/restartability to Progs and generate the stream post-assembly like spadj (comment)
- Make large pointer-free memmoves/memclrs preemptible (runtime: long pauses STW (sweep termination) on massive block allocation #31222)
- Make large pointer-full memmoves/memclrs preemptible (this is a little harder)
- Make large allocations preemptible (closely related to the above two, partly done)
- Fix various annoying spins in the scheduler
- Make more of the runtime preemptible
Metadata
Assignees
Labels
Type
Projects
Status
Triage Backlog
Activity