GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||
GeezerVison is showing github.com — gh-128807: Add marking phase for free-threaded cyclic GC by nascheme · Pull Request #128808 · python/cpython Conversation
|
| old | new | |
|---|---|---|
| GC collections | 38 | 38 |
| long-lived objects | 586,986 | 585,730 |
| total run time | 3.24 s | 3.03 s |
| mark phase time | 0.00 s | 0.16 s |
| total gc time | 0.72 s | 0.57 s |
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Sorry, something went wrong.
There was an error while loading. Please reload this page.
If the object is already marked as reachable, we shouldn't traverse it again.
These are not strictly needed, simplify PR.
More code cleanup (better names, comments, simplify error handling). Fix bug in that "alive" bit must be checked in mark_alive_stack_push() to avoid visiting already visited objects.
Make sure we still do this optimization. There is also a unit test that checks for this.
Reduces duplicate code.
ccc5a11 to
680f80f
Compare
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
Looks great! A few comments below
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Use gc_abort_mark_alive() helper in case of OOM. In addition to freeing the stack, we need to ensure that no object has the alive bit set on it. This also adding missing error handling in the case that propagate_alive_bits() fails.
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Sorry, something went wrong.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
There was an error while loading. Please reload this page.
Successfully merging this pull request may close these issues.
There was an error while loading. Please reload this page.