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: Allow the JIT to remove more `int`/`float`/`str` guards by brandtbucher · Pull Request #131800 · python/cpython

Conversation

@brandtbucher

@brandtbucher brandtbucher commented Mar 27, 2025 •
edited by bedevere-app Bot
Loading

Uh oh!

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

Copy link
Copy Markdown
Member

This changes the definitions of BINARY_OP_SUBSCR_LIST_INT, BINARY_OP_SUBSCR_STR_INT, BINARY_OP_SUBSCR_TUPLE_INT, and STORE_SUBSCR_LIST_INT to use our existing int/str guards for their operands (I'll add new guards for the containers themselves in a follow-up PR). This way, they can be removed when possible.

As part of this change, get rid of the _GUARD_BOTH_FLOAT, _GUARD_BOTH_INT, and _GUARD_BOTH_UNICODE micro-ops, since they just make the abstract interpreter more complicated for not much benefit.

  • 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
brandtbucher and others added 4 commits March 27, 2025 11:49
@brandtbucher
Split up _GUARD_BOTH_* into _GUARD_*_*
688b884
@brandtbucher
Update tests
585031a
@brandtbucher
Break out guards for some instructions
f090ee1
@brandtbucher
Catch up with main
90a1c04
@brandtbucher brandtbucher added performance Performance or resource usage interpreter-core (Objects, Python, Grammar, and Parser dirs) topic-JIT labels Mar 27, 2025
@brandtbucher brandtbucher self-assigned this Mar 27, 2025
@brandtbucher
brandtbucher requested review from Fidget-Spinner and markshannon as code owners March 27, 2025 19:38
@bedevere-app bedevere-app Bot added the awaiting core review label Mar 27, 2025
@bedevere-app bedevere-app Bot mentioned this pull request Mar 27, 2025
Better uop coverage in the JIT optimizer #131798
Open
@brandtbucher
blurb add
602f0e9
@brandtbucher

brandtbucher commented Mar 27, 2025

Copy link
Copy Markdown
Member Author

As part of this change, get rid of the _GUARD_BOTH_FLOAT, _GUARD_BOTH_INT, and _GUARD_BOTH_UNICODE micro-ops, since they just make the abstract interpreter more complicated for not much benefit.

One nice unintended effect of this: x + x has only guards the type of x once now, rather than twice.

All reactions

Sorry, something went wrong.

Uh oh!

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

@brandtbucher

brandtbucher commented Mar 28, 2025

Copy link
Copy Markdown
Member Author

Looks about 0.5% faster. According to the stats, this avoids:

  • 34 million runtime float checks (~3% of the total)
  • 695 million runtime str checks (~29% of the total)
  • 3.344 billion runtime int checks (~38% of the total)
All reactions

Sorry, something went wrong.

Uh oh!

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

brandtbucher added 2 commits April 1, 2025 13:30
@brandtbucher
Catch up with main
c6bc355
@brandtbucher
Catch up with main
5dec2c2
@brandtbucher
brandtbucher merged commit 1a9d4a1 into python:main Apr 1, 2025
@bedevere-app bedevere-app Bot removed the awaiting core review label Apr 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@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

@brandtbucher brandtbucher

Labels

interpreter-core (Objects, Python, Grammar, and Parser dirs) performance Performance or resource usage topic-JIT

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.

1 participant

@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.