-
-
Notifications
You must be signed in to change notification settings - Fork 33.9k
gh-144145: Add __slots__ object property tracking for the Tier 2 JIT optimizer
#144122
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
base: main
Are you sure you want to change the base?
Conversation
| // Maximum slots per object tracked symbolically | ||
| #define MAX_SYMBOLIC_SLOTS_SIZE 16 | ||
| #define SLOTS_ARENA_SIZE (MAX_SYMBOLIC_SLOTS_SIZE * 100) |
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.
We might need to adjust this arena_size.
|
This PR seems unrelated to the issue. It tracks the internal state of objects, not the uniqueness of references. Tracking the internal state of objects is tricky, as we need to keep track of where code might escape and invalidate any knowledge prior to the escape. So far, we have only tracked properties of stateless objects, so it isn't an issue. In future, I would also advise waiting to see if there is general support on the issue before spending time on the implementation. |
|
Thanks for reply!
Sorry, I'm linking to this issue because I discussed the implementation logic with @Fidget-Spinner in this issue, and I think this should be a pre-task for unique reference tracking (if I'm wrong, please point it out, thanks!). I'll create a new issue to link to this PR.
Sorry again for overlooking object escape. I think may be Ken Jin's original requirement was just to add tracking for the Slots object(if I'm wrong, please point it out again, thanks!). Perhaps I should remove the optimization in the
Thanks for the reminder. I'll be more careful in the future. |
__slots__ object property tracking for the Tier 2 JIT optimizer__slots__ object property tracking for the Tier 2 JIT optimizer
Yeah we need to track for escapes. I mentioned it here how to do it #143414 (comment). It got lost in the noise though, so no worries.
I advised @cocolato to embark on this issue. I think there is value in doing it. They waited for me to give my go-ahead before doing it. So I think they didn't do anything wrong. |
|
Thanks! I will refactor this to also support #144141. |
|
@Fidget-Spinner Hi, one thing i want to know. Should this PR flag which property escape during escape handling UOPs (e.g. |
|
Sorry I'm busy for these 2 days. I'll try to review on Saturday. If Mark reviews it earlier, we can go with his ideas. |
This PR implements symbolic tracking for
__slots__object attributes in the Tier 2 JIT optimizer.Currently, when the JIT optimizer encounters
_LOAD_ATTR_SLOT, it creates a new unknown symbol (<!NULL>) even if the same slot was previously written in the same trace. This prevents the optimizer from:Before(set PYTHON_OPT_DEBUG=5):
Now:
__slots__object and its property in the Tier 2 optimizer #144145