-
-
Notifications
You must be signed in to change notification settings - Fork 408
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
[Merged by Bors] - Improve the design of ephemerons in our GC #2530
Conversation
Test262 conformance changes
|
Codecov Report
@@ Coverage Diff @@
## main #2530 +/- ##
==========================================
+ Coverage 49.99% 50.15% +0.16%
==========================================
Files 379 379
Lines 37642 37660 +18
==========================================
+ Hits 18819 18889 +70
+ Misses 18823 18771 -52
Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to try and look at this in more depth and play around with it this weekend, but I wanted to leave some early comments.
On the topic of improvements/clarity changes, I was thinking about the current names of some structs. In particular, thoughts on switching GcCell
to GcRefCell
, GcCellRef
to GcRef
, and GcCellRefMut
to GcRefMut
?
I like it! The current names make |
4fc736c
to
8716dab
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nice changes. I like the renaming too.
8716dab
to
51c4251
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks like it should be fine to move forward with. Nice work on the improvements. 😄
bors r+ |
This PR changes the following: - Modifies `EphemeronBox` to be more akin to `GcBox`, with its own header, roots and markers. This also makes it more similar to [Racket's](https://docs.racket-lang.org/reference/ephemerons.html) implementation. - Removes `EPHEMERON_QUEUE`. - Ephemerons are now tracked on a special `weak_start` linked list, instead of `strong_start` which is where all other GC boxes live. - Documents all unsafe blocks. - Documents our current garbage collection algorithm. I hope this'll clarify a bit what exactly are we doing on every garbage collection. - Renames/removes some functions.
Build failed: |
533d7c6
to
211f150
Compare
bors retry |
This PR changes the following: - Modifies `EphemeronBox` to be more akin to `GcBox`, with its own header, roots and markers. This also makes it more similar to [Racket's](https://docs.racket-lang.org/reference/ephemerons.html) implementation. - Removes `EPHEMERON_QUEUE`. - Ephemerons are now tracked on a special `weak_start` linked list, instead of `strong_start` which is where all other GC boxes live. - Documents all unsafe blocks. - Documents our current garbage collection algorithm. I hope this'll clarify a bit what exactly are we doing on every garbage collection. - Renames/removes some functions.
Pull request successfully merged into main. Build succeeded: |
This PR changes the following:
EphemeronBox
to be more akin toGcBox
, with its own header, roots and markers. This also makes it more similar to Racket's implementation.EPHEMERON_QUEUE
.weak_start
linked list, instead ofstrong_start
which is where all other GC boxes live.