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

Stop-the-world object tracing #24

Open
pliniker opened this issue Jul 7, 2020 · 0 comments
Open

Stop-the-world object tracing #24

pliniker opened this issue Jul 7, 2020 · 0 comments
Assignees
Labels
garbage collection Area: garbage collection medium Some experience and/or subject matter knowledge required

Comments

@pliniker
Copy link
Member

pliniker commented Jul 7, 2020

Implement simple stop-the-world tracing for all objects in all blocks, including large objects.

This code should live on the interpreter side as the entry point to tracing an object is the object header, which is implemented on the interpreter side.

  • Use "white/gray/black" terminology in the code.
  • Each object type should implement a Trace trait with a trace() method. Objects such as symbols and integers that do not get traced into may have a default no-op implementation of this method.
  • The trace() method should call ObjectHeader::mark() on the object.
  • The trace() method may append passed-in objects to a Vec argument to maintain a gray list. There are probably other ways to do this.
  • Lines must be marked too (conservatively for small objects.)
@pliniker pliniker added medium Some experience and/or subject matter knowledge required garbage collection Area: garbage collection labels Jul 7, 2020
This was referenced Jul 7, 2020
@pliniker pliniker self-assigned this Sep 7, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
garbage collection Area: garbage collection medium Some experience and/or subject matter knowledge required
Projects
None yet
Development

No branches or pull requests

1 participant