On 06.10.2016 00:51, Charles Oliver Nutter wrote:
JRuby does this invalidation
eagerly, but the cost can be high for changes to classes close to the
root of the hierarchy. You have fewer guards at each call site, though.
I think that is ok for Groovy.
There is one more special problem I have though: per instance meta
classes. So even if a x and y have the same class as per JVM, they can
have differing meta classes. Which means a switchpoint alone is not
enough... well, trying to get rid of that in the new MOP.
John's description of how Hotspot does this is also helpful; at least in
JRuby, searching up-hierarchy for overridden methods is just a name
lookup since Ruby does not overload.
not overloading solves many problems ;)
I've prototyped a similar system,
with a SwitchPoint per method, but ran into some hairy class structures
that made it complicated. The override search may be the answer for me.
yeah, I can imagine.
mlvm-dev mailing list