I'm coming around to the idea of just having inline checks for "callee has not changed" at every inlining point in my #emacs jit. Slower, but a zillion times simpler than on-stack replacement.