OpenJVM does it, iirc. If the handler is triggered too often at a location, it will swap back to emitting null checks though since it is rather expensive.
Of course, there's a big difference between doing it in a VM and doing it in a random piece of software.
Of course, there's a big difference between doing it in a VM and doing it in a random piece of software.