GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-131798: Split CALL_LEN into several uops by diegorusso · Pull Request #133180 · python/cpython

Conversation

@diegorusso

@diegorusso diegorusso commented Apr 30, 2025 •
edited by bedevere-app Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

Split macro op CALL_LEN into multiple uops including _GUARD_CALLABLE_LEN. This can be removed by the optimizer.

  • Issue: Better uop coverage in the JIT optimizer #131798

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@diegorusso
pythongh-131798: Split CALL_LEN into several uops
ab3f231
Split macro op CALL_LEN into multiple uops including
_GUARD_CALLABLE_LEN. This can be removed by the optimizer.
@diegorusso
diegorusso requested review from Fidget-Spinner and markshannon as code owners April 30, 2025 00:20
@bedevere-app bedevere-app Bot added the awaiting review label Apr 30, 2025
@bedevere-app bedevere-app Bot mentioned this pull request Apr 30, 2025
Better uop coverage in the JIT optimizer #131798
Open
@blurb-it
📜🤖 Added by blurb_it.
e5db5fa
@diegorusso
diegorusso requested a review from brandtbucher April 30, 2025 00:22
brandtbucher
brandtbucher approved these changes May 2, 2025
View reviewed changes
Comment thread Python/optimizer_bytecodes.c

op(_CALL_LEN, (callable[1], self_or_null[1], args[oparg] -- res)) {
op(_CALL_LEN, (unused, unused, unused -- res)) {
res = sym_new_type(ctx, &PyLong_Type);

@brandtbucher brandtbucher May 2, 2025

Copy link
Copy Markdown
Member

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.

One possible improvement for the future: if the top arg is a tuple or a constant str, we can narrow the output to a constant.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

tomasr8 reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

@diegorusso diegorusso May 4, 2025

Copy link
Copy Markdown
Contributor Author

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.

Do you want me to update this PR or shall I do it in a new one?

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions

@diegorusso diegorusso May 5, 2025

Copy link
Copy Markdown
Contributor Author

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.

Let's land this for 3.14. I can raise a new PR for the improvements

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bedevere-app bedevere-app Bot added awaiting merge and removed awaiting review labels May 2, 2025
@brandtbucher

brandtbucher commented May 2, 2025

Copy link
Copy Markdown
Member

Thanks! Can you pull in main and make regen-cases?

diegorusso reacted with thumbs up emoji
All reactions
  • 👍 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@brandtbucher brandtbucher mentioned this pull request May 2, 2025
gh-131798: JIT: Narrow the return type of isinstance for some known arguments #133172
Merged
diegorusso added 3 commits May 4, 2025 22:55
@diegorusso
Merge remote-tracking branch 'origin/main' into call-len
c03babc
* origin/main: (111 commits)
  pythongh-91048: Add filename and line number to external inspection routines (pythonGH-133385)
  pythongh-131178: Add tests for `ast` command-line interface (python#133329)
  Regenerate pcbuild.sln in Visual Studio 2022 (python#133394)
  pythongh-133042: disable HACL* HMAC on Emscripten (python#133064)
  pythongh-133351: Fix remote PDB's multi-line block tab completion (python#133387)
  pythongh-109700: Improve stress tests for interpreter creation (pythonGH-109946)
  pythongh-81793: Skip tests for os.link() to symlink on Android (pythonGH-133388)
  pythongh-126835: Rename `ast_opt.c` to `ast_preprocess.c` and related stuff after moving const folding to the peephole optimizier (python#131830)
  pythongh-91048: Relax test_async_global_awaited_by to fix flakyness (python#133368)
  pythongh-132457: make staticmethod and classmethod generic (python#132460)
  pythongh-132805: annotationlib: Fix handling of non-constant values in FORWARDREF (python#132812)
  pythongh-132426: Add get_annotate_from_class_namespace replacing get_annotate_function (python#132490)
  pythongh-81793: Always call linkat() from os.link(), if available (pythonGH-132517)
  pythongh-122559: Synchronize C and Python implementation of the io module about pickling (pythonGH-122628)
  pythongh-69605: Add PyREPL import autocomplete feature to 'What's New' (python#133358)
  bpo-44172: Keep reference to original window in curses subwindow objects (pythonGH-26226)
  pythonGH-133231: Changes to executor management to support proposed `sys._jit` module (pythonGH-133287)
  pythongh-133363: Fix Cmd completion for lines beginning with `! ` (python#133364)
  pythongh-132983: Introduce `_zstd` bindings module (pythonGH-133027)
  pythonGH-91048: Add utils for printing the call stack for asyncio tasks (python#133284)
  ...
@diegorusso
Update uops_ids via make regen-cases
2e6d608
@diegorusso
Merge remote-tracking branch 'origin/main' into call-len
251007d
* origin/main:
  pythongh-125618: Make FORWARDREF format succeed more often (python#132818)
@diegorusso

diegorusso commented May 4, 2025

Copy link
Copy Markdown
Contributor Author

Thanks! Can you pull in main and make regen-cases?

Done!

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

diegorusso added 4 commits May 5, 2025 08:43
@diegorusso
Merge branch 'main' into call-len
0475b56
@diegorusso
Merge branch 'main' into call-len
7cf7349
@diegorusso
Update pycore_uop_metadata.h
4b43b5a
@diegorusso
Merge branch 'main' into call-len
046f911
@brandtbucher
brandtbucher merged commit 9cc77aa into python:main May 5, 2025
@bedevere-app bedevere-app Bot removed the awaiting merge label May 5, 2025
@diegorusso
diegorusso deleted the call-len branch May 7, 2025 13:28
@diegorusso
diegorusso restored the call-len branch May 7, 2025 13:28
diegorusso added a commit to diegorusso/cpython that referenced this pull request May 19, 2025
@diegorusso
pythongh-133180: Optimize _CALL_LIST_APPEND
83c8b95
@diegorusso
diegorusso deleted the call-len branch May 21, 2025 10:02
Pranjal095 pushed a commit to Pranjal095/cpython that referenced this pull request Jul 12, 2025
@diegorusso @Pranjal095
pythonGH-131798: Split CALL_LEN into several uops (pythonGH-133180)
c753a9b
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@brandtbucher brandtbucher brandtbucher approved these changes
@Fidget-Spinner Fidget-Spinner Awaiting requested review from Fidget-Spinner Fidget-Spinner is a code owner
@markshannon markshannon Awaiting requested review from markshannon markshannon is a code owner

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

2 participants

@diegorusso @brandtbucher
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.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.