Please sign in to comment.
Return of tracking the fiber data explicitly
This mostly reverts 1e19933 and introduces a separate mechanism for marking fiber data's. This marking is used so we can clean up inactive fibers that are unreachable. The reason for reverting the original change is not because it's wrong, but because it makes concurrent gc much harder. The problem is that it was scanning stacks inside the fiber marking, which is a problem with concurrent marking. Therefore we now use a mechanism where we can scan the not running but still active fibers in the final phase of the mature GC, so we can do that in the stop the world phases of concurrent GC. The downside of this approach compared to the previous one is that inactive young fibers will be scanned during young gc cycles and kept active until promoted. Only after that will they be cleaned up. This only happens for fibers that haven't finished and are not reachable anymore, so this is not a huge issue.
- Loading branch information...
Showing with 145 additions and 35 deletions.