diff options
author | mpage <mpage@meta.com> | 2024-10-09 15:18:25 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-09 15:18:25 (GMT) |
commit | f978fb4f8d6eac0585057e463bb1701dc04a9900 (patch) | |
tree | 72dc60eb608119b7c6f9315788132b7bb1b8ff92 /Python/codecs.c | |
parent | b9a8ca0a6aa9251cb798f34f0c9d2cc95107eec6 (diff) | |
download | cpython-f978fb4f8d6eac0585057e463bb1701dc04a9900.zip cpython-f978fb4f8d6eac0585057e463bb1701dc04a9900.tar.gz cpython-f978fb4f8d6eac0585057e463bb1701dc04a9900.tar.bz2 |
gh-115999: Refactor `LOAD_GLOBAL` specializations to avoid reloading {globals, builtins} keys (gh-124953)
Each of the `LOAD_GLOBAL` specializations is implemented roughly as:
1. Load keys version.
2. Load cached keys version.
3. Deopt if (1) and (2) don't match.
4. Load keys.
5. Load cached index into keys.
6. Load object from (4) at offset from (5).
This is not thread-safe in free-threaded builds; the keys object may be replaced
in between steps (3) and (4).
This change refactors the specializations to avoid reloading the keys object and
instead pass the keys object from guards to be consumed by downstream uops.
Diffstat (limited to 'Python/codecs.c')
0 files changed, 0 insertions, 0 deletions