-
-
Notifications
You must be signed in to change notification settings - Fork 41
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
a different approach to the action dispatcher to fix #4899
the problem is that making sure the ActionFlag.fire method does not collect is not enough. it must also not change any pointer fields that would trigger the write barrier to be called (unfortunately we have no annotation for that). the bug in 4899 is an invariant in the GC being violated by a GC hook action being inserted into the linked list of actions. the new approach is to have a list of all actions and a bitfield that signifies if an action has fired. that way we don't need to put an action into a linked list at all if it fires, instead we just set the corresponding bit.
- Loading branch information
Showing
1 changed file
with
35 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters