-
-
Notifications
You must be signed in to change notification settings - Fork 31.9k
gh-107457: update dis documentation with changes in 3.12 #108900
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
Conversation
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.
The LOAD_SUPER_ATTR
changes look OK to me, modulo suggested edits.
Co-authored-by: Carl Meyer <[email protected]>
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.
The LOAD_SUPER_ATTR
changes look good to me now. The other changes look reasonable, but I'd rather get @markshannon or @iritkatriel to confirm the accuracy of the new paragraph on 3.12 jump changes.
Doc/library/dis.rst
Outdated
@@ -42,6 +42,16 @@ interpreter. | |||
bytecode to specialize it for different runtime conditions. The | |||
adaptive bytecode can be shown by passing ``adaptive=True``. | |||
|
|||
.. versionchanged:: 3.12 | |||
For instruction leading to a jump, a jump by 0 instruction should always |
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.
What is an "instruction leading to a jump"?
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 agree it is a bit convoluted. I am happy to use a different phrasing. Initially I went for this because of opcode like FOR_ITER
that do not jump often.
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 don't understand what you mean, so I can't offer how to reword it.
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.
Would the following re-wording read better ?
When the offset of a jump instruction is 0, the jump should always lead to the instruction directly following the jump instruction. Starting with 3.12, some jump instructions can be followed by a :opcode:CACHE
instruction. When the argument of such an instruction is 0, it will jump to the first non-CACHE
instruction following the jump instruction.
As a consequence, the presence of the :opcode:CACHE
instructions is transparent for forward jumps but need to be taken into account when reasoning about backward jumps.
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 think I see what you mean now.
Can we just say that "the arg of a jump is the offset from the instruction that appears immediately after the JUMP instruction's CACHE entries" ?
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.
Can we agree on the following ? I would prefer to insist on the forward backward asymmetry
The argument of a jump is the offset of the target relative to the instruction that appears immediately after the jump instruction's CACHE entries.
As a consequence, the presence of the CACHE instructions is transparent for forward jumps but need to be taken into account when reasoning about backward jumps.
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.
Sure. I think "need --> needs" though.
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.
Sure
Can I do anything to help merge this work ? |
There was this question: https://github.com/python/cpython/pull/108900/files#r1336237016 |
Doc/library/dis.rst
Outdated
arguments and sets ``STACK[-1]`` to the result. Used to implement functionality that is | ||
necessary but not performance critical. | ||
Calls an intrinsic function with two arguments. Used to implement functionality | ||
that is necessary but not performance critical:: |
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.
that is necessary but not performance critical:: | |
that is not performance critical:: |
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 can see you copied this from the 1-arg opcode. But I think it's redundant in both cases.
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 will update it
Thanks @MatthieuDartiailh for the PR, and @iritkatriel for merging it 🌮🎉.. I'm working now to backport this PR to: 3.12. |
…nGH-108900) (cherry picked from commit 198aa67) Co-authored-by: Matthieu Dartiailh <[email protected]>
GH-110985 is a backport of this pull request to the 3.12 branch. |
This PR addresses the following points of #107457 which should be backported to 3.12
I did not address the following points:
I plan to address the What's new issues in a follow up PR
📚 Documentation preview 📚: https://cpython-previews--108900.org.readthedocs.build/