Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Some GC marking fixes #7

Closed
wants to merge 5 commits into from

Conversation

fingolfin
Copy link
Collaborator

TODO: precords and components objects.

Also be advised that I'll submit this to GAP master, too -- so after it's merged there, we should consider rebasing your branch once again.

Not all slots of a T_FUNCTION bag are filled with bag refs, yet when
marking the slots of such a bag during garbage collection, we still used
MarkAllSubBags. This is usually no problem with GASMAN, as it detects if
a pointer isn't a master pointer, and can then simply ignore it. But
other garbage collections can't as easily verify master pointers. So
let's try to be accurate about what we mark as a bag and what not: skip
the first eight slots of every T_FUNCTION bag for marking (they contain
pointers to C functions), and also ensure that the rest of any
T_FUNCTION bag only contains bag refs.

Also fix a bug in saving/restoring operations, where the 'enabled' field
was stored as an UInt, even though it now is an Obj (though we currently
only store immediate ints in it, hence there was no functional problem).
... instead of a T_BODY, as we don't really create a T_BODY here.
(and this can lead to confusion in GC marking)
@fingolfin
Copy link
Collaborator Author

This version of the code has bugs, shouldn't be merged. In the meantime, there is now gap-system#2408

@fingolfin fingolfin closed this Apr 27, 2018
@fingolfin fingolfin deleted the mh/alt-gc-marking branch May 18, 2018 16:13
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant