not sure why this isn't a transparent feature implemented via caching.
Some other JVMs (at least Azul's Zing) try to solve this by cache profiling information to speed up code generation.
https://www.youtube.com/watch?v=Xybzyv8qbOc
Basically they thought it'd de-opt too much. I'm not totally sure it's the case but they'd be the experts on that.