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 — bpo-46841: Inline cache for `BINARY_SUBSCR`. by markshannon · Pull Request #31618 · python/cpython

Conversation

@markshannon

@markshannon markshannon commented Feb 28, 2022 •
edited by bedevere-bot
Loading

Uh oh!

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

Copy link
Copy Markdown
Member

https://bugs.python.org/issue46841

Sorry, something went wrong.

Uh oh!

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

All reactions
markshannon added 4 commits February 28, 2022 14:33
@markshannon
Use inline cache for BINARY_SUBSCR. Work in progress.
465f0c0
@markshannon
Merge branch 'main' into inline-cache-binary-subscr
8381b7f
@markshannon
Finish inlining cache for .
a9f7043
@markshannon
Tidy up
a330574
@bedevere-bot bedevere-bot added the awaiting core review label Feb 28, 2022
@the-knights-who-say-ni the-knights-who-say-ni added the CLA signed label Feb 28, 2022
@markshannon markshannon mentioned this pull request Feb 28, 2022
bpo-46841: Move the cache for LOAD_GLOBAL inline. #31575
Merged
@markshannon
markshannon requested a review from brandtbucher February 28, 2022 22:17
brandtbucher
brandtbucher approved these changes Mar 1, 2022
View reviewed changes

@brandtbucher brandtbucher left a comment •
edited
Loading

Uh oh!

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

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.

Thanks, looks good overall.

I still think that it makes more sense (and is a bit simpler) to just store pointers across four cache entries for now, and explore something like this separately as a possible improvement later. It seems to me that the way you've done it here is quite a bit more complicated, for negligible gain: 6 byte savings per unquickened site, offset by the cost of an extra 2 bytes and a pointer indirection per quickened site, plus 10 more wasted bytes for the vast majority of quickened calls.

But I'll defer to your judgement here.

Sorry, something went wrong.

Uh oh!

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

All reactions
Comment thread Lib/test/test_capi.py Resolved

Uh oh!

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

Comment thread Python/specialize.c Resolved

Uh oh!

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

Comment thread Python/specialize.c Resolved

Uh oh!

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

Comment thread Include/cpython/code.h Resolved

Uh oh!

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

@bedevere-bot bedevere-bot added awaiting merge and removed awaiting core review labels Mar 1, 2022
markshannon added 2 commits March 1, 2022 11:10
@markshannon
Address review comments.
e4b0ba0
@markshannon
Remove per-code-object-cache and add small per-heap-type cache.
05787b3
@markshannon

markshannon commented Mar 1, 2022

Copy link
Copy Markdown
Member Author

I've added some comments on about how to handle pointers to faster-cpython/ideas#263
and removed the need for a per-code-object cache from this PR and shrinks the inline cache a bit.

All reactions

Sorry, something went wrong.

Uh oh!

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

markshannon added 5 commits March 1, 2022 12:48
@markshannon
Remove unused parameter.
956ed1e
@markshannon
Remove unused code.
0e282f3
@markshannon
Merge branch 'main' into inline-cache-binary-subscr
d0c9077
@markshannon
Clarify comments.
f667ddb
@markshannon
Fix typo.
2271337
@markshannon
markshannon merged commit 3b0f1c5 into python:main Mar 1, 2022
@bedevere-bot bedevere-bot removed the awaiting merge label Mar 1, 2022
@brandtbucher brandtbucher mentioned this pull request Mar 2, 2022
Inline caching faster-cpython/ideas#310
Closed
21 of 26 tasks
@brandtbucher brandtbucher mentioned this pull request Apr 10, 2022
Inline bytecode caches #90997
Closed
@markshannon
markshannon deleted the inline-cache-binary-subscr branch September 26, 2023 12:48
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

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.

4 participants

@markshannon @brandtbucher @the-knights-who-say-ni @bedevere-bot
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.