bpo-40228: More robust frame.setlineno.#19437
Merged
markshannon merged 4 commits intopython:masterfrom Apr 29, 2020
Merged
Conversation
Objects/frameobject.c
Outdated
Contributor
There was a problem hiding this comment.
Please put the { on its own line (PEP 7).
Objects/frameobject.c
Outdated
Contributor
There was a problem hiding this comment.
Please check this call for failure.
Objects/frameobject.c
Outdated
Contributor
There was a problem hiding this comment.
Please use PyBytes_GET_SIZE() here instead of PyBytes_Size().
Objects/frameobject.c
Outdated
Contributor
There was a problem hiding this comment.
lines is leaked here.
Objects/frameobject.c
Outdated
Contributor
There was a problem hiding this comment.
Please use PyBytes_GET_SIZE().
Objects/frameobject.c
Outdated
Contributor
There was a problem hiding this comment.
PyBytes_AS_STRING().
PEP 7 states that no line should be longer than 79 characters.
Objects/frameobject.c
Outdated
Member
Author
|
@ZackerySpytz thanks for the review |
Member
Author
|
Re-basing to force test re-run before merging. |
35a951c to
55daf2c
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Makes no assumptions about the layout of bytecode.
Makes setting
frame.f_linenomore robust and flexible.To improve robustness, the code takes the simple, pragmatic approach: If it is safe to make the jump, then do so. We no longer attempt to decide if it "reasonable" or "sensible", merely if it is safe.
"Safe" in this context, means "won't crash the interpreter".
The increased flexibility is a side effect of this more pragmatic approach.
There are number of test cases where a jump is safe, but we disallowed it. Those cases are now allowed.
A couple of cases are now disallowed. Those involve jumping to unreachable code. Since we cannot compute the exception stack state for unreachable code, it is unsafe to jump to it.
Removing assumptions about the bytecode layout will allow us to enhance the compiler without worrying about breaking this code all the time.
Another point in favour of this PR is that it reduces the code size by about 80 lines.
https://bugs.python.org/issue40228