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-87729: specialize LOAD_SUPER_ATTR_METHOD#103809

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
carljm merged 38 commits intopython:mainfromcarljm:superopt_spec
Apr 25, 2023

Conversation

@carljm
Copy link
Member

carljmand others added30 commitsApril 12, 2023 20:12
* main:pythongh-103479: [Enum] require __new__ to be considered a data type (pythonGH-103495)pythongh-103365: [Enum] STRICT boundary corrections (pythonGH-103494)pythonGH-103488: Use return-offset, not yield-offset. (pythonGH-103502)pythongh-103088: Fix test_venv error message to avoid bytes/str warning (pythonGH-103500)pythonGH-103082: Turn on branch events for FOR_ITER instructions. (python#103507)pythongh-102978: Fix mock.patch function signatures for class and staticmethod decorators (python#103228)pythongh-103462: Ensure SelectorSocketTransport.writelines registers a writer when data is still pending (python#103463)pythongh-95299: Rework test_cppext.py to not invoke setup.py directly (python#103316)
Co-authored-by: Dong-hee Na <donghee.na92@gmail.com>
* main:pythongh-103532: Remove TKINTER_PROTECT_LOADTK code (pythonGH-103535)pythongh-103180: Add CI timeouts to all GitHub Actions jobs (python#103437)  Remove double space in import error message (python#103458)  ipaddress: Remove non-existent ip_str param from docstring (python#103461)  Fix syntax typo in isolating extensions doc (python#103516)pythongh-103406: Modernize pos-only arguments usage in `test_signature` (python#103407)  Proofread howto/perf_profiling.rst (python#103530)  Fix unused functions warnings in instrumentation.c (pythonGH-103515)
* superopt:  fix incompatible types  update generated cases  don't unnecessarily re-find args in error case  Apply suggestions from code reviewpythongh-103532: Remove TKINTER_PROTECT_LOADTK code (pythonGH-103535)pythongh-103180: Add CI timeouts to all GitHub Actions jobs (python#103437)  Remove double space in import error message (python#103458)  ipaddress: Remove non-existent ip_str param from docstring (python#103461)  Fix syntax typo in isolating extensions doc (python#103516)pythongh-103406: Modernize pos-only arguments usage in `test_signature` (python#103407)  Proofread howto/perf_profiling.rst (python#103530)  Fix unused functions warnings in instrumentation.c (pythonGH-103515)
* main:  Remove `expert-*` from `project-updater` GH workflow (python#103579)pythongh-103583: Add codecs and maps to _codecs_* module state (python#103540)pythongh-48330: address review comments to PR-12271 (python#103209)pythongh-103527: Add multibytecodec.h as make dep for _codecs_* (python#103567)pythongh-103553: Improve `test_inspect`: add more assertions, remove unused (python#103554)pythonGH-103517: Improve tests for `pathlib.Path.walk()` (pythonGH-103518)pythongh-102114: Make dis print more concise tracebacks for syntax errors in str inputs (python#102115)pythonGH-78079: Fix UNC device path root normalization in pathlib (pythonGH-102003)pythongh-101517: Add regression test for a lineno bug in try/except* impacting pdb (python#103547)pythongh-103527: Add make deps for _codecs_* and _multibytecodec (python#103528)pythongh-103532: Fix reST syntax in NEWS entry (pythonGH-103544)pythongh-103532: Add NEWS entry (python#103542)
* superopt:  update generated cases with new comment  review comments  Remove `expert-*` from `project-updater` GH workflow (python#103579)pythongh-103583: Add codecs and maps to _codecs_* module state (python#103540)pythongh-48330: address review comments to PR-12271 (python#103209)pythongh-103527: Add multibytecodec.h as make dep for _codecs_* (python#103567)pythongh-103553: Improve `test_inspect`: add more assertions, remove unused (python#103554)pythonGH-103517: Improve tests for `pathlib.Path.walk()` (pythonGH-103518)pythongh-102114: Make dis print more concise tracebacks for syntax errors in str inputs (python#102115)pythonGH-78079: Fix UNC device path root normalization in pathlib (pythonGH-102003)pythongh-101517: Add regression test for a lineno bug in try/except* impacting pdb (python#103547)pythongh-103527: Add make deps for _codecs_* and _multibytecodec (python#103528)pythongh-103532: Fix reST syntax in NEWS entry (pythonGH-103544)pythongh-103532: Add NEWS entry (python#103542)
* main: (24 commits)pythongh-98040: Move the Single-Phase Init Tests Out of test_imp (pythongh-102561)pythongh-83861: Fix datetime.astimezone() method (pythonGH-101545)pythongh-102856: Clean some of the PEP 701 tokenizer implementation (python#103634)pythongh-102856: Skip test_mismatched_parens in WASI builds (python#103633)pythongh-102856: Initial implementation of PEP 701 (python#102855)pythongh-103583: Add ref. dependency between multibytecodec modules (python#103589)pythongh-83004: Harden msvcrt further (python#103420)pythonGH-88342: clarify that `asyncio.as_completed` accepts generators yielding tasks (python#103626)pythongh-102778: IDLE - make sys.last_exc available in Shell after traceback (python#103314)pythongh-103582: Remove last references to `argparse.REMAINDER` from docs (python#103586)pythongh-103583: Always pass multibyte codec structs as const (python#103588)pythongh-103617: Fix compiler warning in _iomodule.c (python#103618)pythongh-103596: [Enum] do not shadow mixed-in methods/attributes (pythonGH-103600)pythonGH-100530: Change the error message for non-class class patterns (pythonGH-103576)pythongh-95299: Remove lingering setuptools reference in installer scripts (pythonGH-103613)  [Doc] Fix a typo in optparse.rst (python#103504)pythongh-101100: Fix broken reference `__format__` in `string.rst` (python#103531)pythongh-95299: Stop installing setuptools as a part of ensurepip and venv (python#101039)pythonGH-103484: Docs: add linkcheck allowed redirects entries for most cases (python#103569)pythongh-67230: update whatsnew note for csv changes (python#103598)  ...
* main: (53 commits)pythongh-102498 Clean up unused variables and imports in the email module  (python#102482)pythongh-99184: Bypass instance attribute access in `repr` of `weakref.ref` (python#99244)pythongh-99032: datetime docs: Encoding is no longer relevant (python#93365)pythongh-94300: Update datetime.strptime documentation (python#95318)pythongh-103776: Remove explicit uses of $(SHELL) from Makefile (pythonGH-103778)pythongh-87092: fix a few cases of incorrect error handling in compiler (python#103456)pythonGH-103727: Avoid advancing tokenizer too far in f-string mode (pythonGH-103775)  Revert "Add tests for empty range equality (python#103751)" (python#103770)pythongh-94518: Port 23-argument `_posixsubprocess.fork_exec` to Argument Clinic (python#94519)pythonGH-65022: Fix description of copyreg.pickle function (python#102656)pythongh-103323: Get the "Current" Thread State from a Thread-Local Variable (pythongh-103324)pythongh-91687: modernize dataclass example typing (python#103773)pythongh-103746: Test `types.UnionType` and `Literal` types together (python#103747)pythongh-103765: Fix 'Warning: py:class reference target not found: ModuleSpec' (pythonGH-103769)pythongh-87452: Improve the Popen.returncode docs  Removed unnecessary escaping of asterisks (python#103714)pythonGH-102973: Slim down Fedora packages in the dev container (python#103283)pythongh-103091: Add PyUnstable_Type_AssignVersionTag (python#103095)  Add tests for empty range equality (python#103751)pythongh-103712: Increase the length of the type name in AttributeError messages (python#103713)  ...
* main:pythongh-101517: fix line number propagation in code generated for except* (python#103550)pythongh-103780: Use patch instead of mock in asyncio unix events test (python#103782)
* superopt: (82 commits)pythongh-101517: fix line number propagation in code generated for except* (python#103550)pythongh-103780: Use patch instead of mock in asyncio unix events test (python#103782)pythongh-102498 Clean up unused variables and imports in the email module  (python#102482)pythongh-99184: Bypass instance attribute access in `repr` of `weakref.ref` (python#99244)pythongh-99032: datetime docs: Encoding is no longer relevant (python#93365)pythongh-94300: Update datetime.strptime documentation (python#95318)pythongh-103776: Remove explicit uses of $(SHELL) from Makefile (pythonGH-103778)pythongh-87092: fix a few cases of incorrect error handling in compiler (python#103456)pythonGH-103727: Avoid advancing tokenizer too far in f-string mode (pythonGH-103775)  Revert "Add tests for empty range equality (python#103751)" (python#103770)pythongh-94518: Port 23-argument `_posixsubprocess.fork_exec` to Argument Clinic (python#94519)pythonGH-65022: Fix description of copyreg.pickle function (python#102656)pythongh-103323: Get the "Current" Thread State from a Thread-Local Variable (pythongh-103324)pythongh-91687: modernize dataclass example typing (python#103773)pythongh-103746: Test `types.UnionType` and `Literal` types together (python#103747)pythongh-103765: Fix 'Warning: py:class reference target not found: ModuleSpec' (pythonGH-103769)pythongh-87452: Improve the Popen.returncode docs  Removed unnecessary escaping of asterisks (python#103714)pythonGH-102973: Slim down Fedora packages in the dev container (python#103283)pythongh-103091: Add PyUnstable_Type_AssignVersionTag (python#103095)  ...
* main:pythongh-100227: Only Use deepfreeze for the Main Interpreter (pythongh-103794)pythongh-103492: Clarify SyntaxWarning with literal comparison (python#103493)pythongh-101100: Fix Sphinx warnings in `argparse` module (python#103289)
* superopt:pythongh-100227: Only Use deepfreeze for the Main Interpreter (pythongh-103794)pythongh-103492: Clarify SyntaxWarning with literal comparison (python#103493)pythongh-101100: Fix Sphinx warnings in `argparse` module (python#103289)
@carljmcarljm requested review frombrandtbucher and removed request forbrettcannon,encukou,ncoghlan andwarsawApril 24, 2023 22:53
* main:pythongh-103801: Tools/wasm linting and formatting (python#103796)pythongh-103673: Add missing ForkingUnixStreamServer and ForkingUnixDatagramServer socketservers (python#103674)pythongh-95795: Move types.next_version_tag to PyInterpreterState (pythongh-102343)
@carljmcarljm added the 🔨 test-with-refleak-buildbotsTest PR w/ refleak buildbots; report in status section labelApr 24, 2023
@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by@carljm for commit3d0e51a 🤖

If you want to schedule another build, you need to add the🔨 test-with-refleak-buildbots label again.

@bedevere-botbedevere-bot removed the 🔨 test-with-refleak-buildbotsTest PR w/ refleak buildbots; report in status section labelApr 24, 2023
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.

There is some potential for simplifyingLOAD_SUPER_ATTR, now that there is a specialization

carljm reacted with thumbs up emoji
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.

Looks good now.
Thanks.

carljm reacted with thumbs up emoji
@carljmcarljmenabled auto-merge (squash)April 25, 2023 17:30
@carljmcarljm merged commitef25feb intopython:mainApr 25, 2023
@carljmcarljm deleted the superopt_spec branchApril 25, 2023 18:00
gotofail;
}
PyTypeObject*tp= (PyTypeObject*)class;
PyObject*res=_PySuper_LookupDescr(tp,self,name);

Choose a reason for hiding this comment

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

Is this leaked? I don't see where we DECREF it.

carljm reacted with thumbs up emoji

Choose a reason for hiding this comment

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

Yeah I think it's leaked, _PySuper_LookupDescr incref's its result.

Copy link
MemberAuthor

Choose a reason for hiding this comment

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

For future reference, fix by@JelleZijlstra in#103882

@tacaswell
Copy link
Contributor

I think this is breaking c++ extensions asclass is a reserved keyword in c++

diff --git a/Include/internal/pycore_code.h b/Include/internal/pycore_code.hindex 7d5d5e03de..f15328fd8e 100644--- a/Include/internal/pycore_code.h+++ b/Include/internal/pycore_code.h@@ -226,7 +226,7 @@ extern int _PyLineTable_PreviousAddressRange(PyCodeAddressRange *range); /* Specialization functions */-extern void _Py_Specialize_LoadSuperAttr(PyObject *global_super, PyObject *class, PyObject *self,+extern void _Py_Specialize_LoadSuperAttr(PyObject *global_super, PyObject *klass, PyObject *self,                                          _Py_CODEUNIT *instr, PyObject *name, int load_method); extern void _Py_Specialize_LoadAttr(PyObject *owner, _Py_CODEUNIT *instr,                                     PyObject *name);

gets things compiling again, but I am not sure if this is the right fix (or you want to propagate the name change through the implementation as well).

@JelleZijlstra
Copy link
Member

We could just remove the parameter names from the prototype.

@tacaswell
Copy link
Contributor

Just this prototype and leave the rest?

@carljm
Copy link
MemberAuthor

carljm commentedApr 28, 2023
edited
Loading

Thanks for the report!

All the other specialization functions include the parameter names in the prototype; it seems preferable to stay consistent. I don't mind changingclass toklass throughout header and implementation; I can put up a PR for this.

@carljm
Copy link
MemberAuthor

fix PR in#103979

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

@JelleZijlstraJelleZijlstraJelleZijlstra left review comments

@markshannonmarkshannonmarkshannon approved these changes

@ericsnowcurrentlyericsnowcurrentlyAwaiting requested review from ericsnowcurrentlyericsnowcurrently is a code owner

@brandtbucherbrandtbucherAwaiting requested review from brandtbucher

@Fidget-SpinnerFidget-SpinnerAwaiting requested review from Fidget-Spinner

Assignees

No one assigned

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Use dedicated opcodes to speed up calls/attribute lookups with super() as receiver

7 participants

@carljm@bedevere-bot@tacaswell@JelleZijlstra@markshannon@Fidget-Spinner@ambv

[8]ページ先頭

©2009-2025 Movatter.jp