Store PyObjectRef in CodeObject constants #2294
Merged
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.
./rustpython-norm benchmarks/pystone.py 50000
./rustpython-opt3 benchmarks/pystone.py 50000
A bit faster, and should be in general better for memory usage. This also paves the way to string interning;
ctx.unwrap_constant()
can intern strings and that should also improve memory usage and performance (due to str hash caching and identity comparison in dicts).I also removed the peephole optimizer; I was the one who originally wrote it and I didn't feel like rewriting it to work with the
constants
vec. I also feel that in general, it was adding too much complexity for not enough benefit. I think we can make a better optimizer, but it definitely has to be something that operates on an already compiled codeobject; the streaming optimizer thing we had withOutputStream
just doesn't really work.I also changed the compiler to use
insta
for snapshot testing of compilation results