Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

GH-99298: Don't perform jumps before error handling#99299

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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
brandtbucher merged 2 commits intopython:mainfrombrandtbucher:jump-after-error
Nov 10, 2022

Conversation

brandtbucher
Copy link
Member

@brandtbucherbrandtbucher commentedNov 9, 2022
edited by bedevere-bot
Loading

My next steps:

  • This will need a manual backport to 3.11 (3.10 seems unaffected).
  • For 3.12,_Py_Specialize_LoadAttr and_Py_Specialize_StoreAttr don't actually need to handle errors (we can just fail to specialize "unready" types, which are probably super rare in practice).

@brandtbucherbrandtbucher added type-bugAn unexpected behavior, bug, or error interpreter-core(Objects, Python, Grammar, and Parser dirs) labelsNov 9, 2022
@brandtbucherbrandtbucher self-assigned thisNov 9, 2022
Copy link
Member

@markshannonmarkshannon left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

LGTM. One minor issue about the error handling.

@@ -1152,6 +1152,8 @@ dummy_func(
PyObject *name = GETITEM(names, oparg);
next_instr--;
if (_Py_Specialize_StoreAttr(owner, next_instr, name)) {
// "undo" the rewind so end up in the correct handler:
next_instr++;
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Adding any code to a conditional block with just a goto adds extra branches.
It's not so important for these slower instructions, but its best avoided in general.

What we generally do isif (cond) goto fixup_error; wherefixup_error does the necessary fix before jumping toerror:. The C compiler will probably do this for us, but I think it best to be explicit.

Copy link
MemberAuthor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Yeah, see my comment at the top of this PR._Py_Specialize_StoreAttr and_Py_Specialize_LoadAttr don't really need error handling at all, so the next thing I'm going to do it make them returnvoid like the others in 3.12. Then we don't need the branch at all. :)

I'm hesitant to add additional labels andgotos to the 3.11 backport, especially since this is pretty cold code. Let me know if you think I should, though.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others.Learn more.

Ok, leave this for this PR.

Maybe make a PR for 3.12 that removes the branch entirely?

brandtbucher reacted with thumbs up emoji
@markshannonmarkshannon self-requested a reviewNovember 10, 2022 16:45
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Reviewers

@markshannonmarkshannonmarkshannon approved these changes

Assignees

@brandtbucherbrandtbucher

Labels
interpreter-core(Objects, Python, Grammar, and Parser dirs)type-bugAn unexpected behavior, bug, or error
Projects
None yet
Milestone
No milestone
Development

Successfully merging this pull request may close these issues.

3 participants
@brandtbucher@markshannon@bedevere-bot

[8]ページ先頭

©2009-2025 Movatter.jp