Deoptimization is susceptible to failure because it uses cross code patching. At the moment we know of no cpu's where this fails but we may well be running out of time. Newer Intel processors have an errata which isn't planned to be fixed that hints that we could fail.
We should use a deopt scheme that uses return address patching instead. This also allows us to go to single frame deopt. a capability we lost when lazy deopt was implemented.