Skip to content
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

experimental: Inline caches for the interpreter #17227

Draft
wants to merge 9 commits into
base: Pharo12
Choose a base branch
from

Conversation

iglosiggio
Copy link
Contributor

Leaves "free slots" after method selectors. This is a simple, backwards-compatible change.

The design of bytecode ICs is not yet written on stone. The current VM implementation stores the (selector, classTag, compiledMethod) tuple inlined on the literals array.

This slot is to be used by the interpreter so it can optimize message lookups.
This change is missing some kind of "versioning"mechanism that can be used to signal which methods have cache slots and which do not.

Methods with cache slots should still work in previous VMs (they just see a big compiled method that has a lot of nils stored at its literals).
Copy link

welcome bot commented Oct 7, 2024

Thanks for opening this pull request! Now continious integration (CI) will build Pharo with your change and run all tests. This might fail due to many reasons! Please check if your PR breaks the build or makes tests fail. Feel free to add comments to the PR. After this, before your PR can be merged it needs one or more reviews. Do not hesitate to ask people (on the Mailinglist or Discord) to help! When the CI shows no problems and there are positive reviews, your PR will be merged.

This is temporary, a version number would be better. I think...
@MarcusDenker MarcusDenker added the Status: Need more work The issue is nearly ready. Waiting some last bits. label Oct 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Status: Need more work The issue is nearly ready. Waiting some last bits.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants