What information do we need to gather during "adaptive" interpretation? #401
Unanswered
markshannon
asked this question in
Q&A
Replies: 1 comment 5 replies
-
We currently collect and use the type of every input (used stack element) of every bytecode. At the moment we don't collect specific objects at all. |
Beta Was this translation helpful? Give feedback.
5 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
An optimizer of regions larger than a single instruction is going to want information about the values seen during prior execution.
What values should we gather?
What sort of API should we provide, so that optimizers don't need to probe the interpreter's internal data structures?
For which operations should we record the actual value, and for which should we record the class of that value?
This is fairly clear in most cases. E.g. we want the value for calls, but the types for binary operations.
What do we need to record that isn't obvious?
What other things should we record?
E.g. reference counts for binary operations (#380 (reply in thread))
We already gather quite a lot of information, but often in the form of version numbers, which makes it tricky to get the original value.
We could record the actual values, which would be expensive, or we could use the type cache to lookup types, which would be cheaper but probabilistic.
What information do Pyston and Cinder record?
@undingen
@kmod
@carljm
@DinoV
[This subject was brought several times up in #375 and #380]
Beta Was this translation helpful? Give feedback.
All reactions