The article says:
"So when you change what + means, it will throw away all those methods it compiled with the old definition. Poof. Gone."
Is this enough? What about the function's side effects?
If the function changed 1000 variables with the wrong + definition, is it going to roll them back?
I once ran across an application that had a heap footprint for which the size was fixed at runtime. The data locality loss from the indirection killed the performance. In principle, JIT could fairly transparently unbox this and have no heap footprint
It probably doesn't help that we never see an interpreted language beat say C speed wise?