The code patching mechanism described in
RVM-248 could go into an infinite loop if one of the methods that needs to be executed to perform the code patching operation itself becomes patched.
To prevent this, we need to annotate the methods involved in this operation and either prevent them from being invoked by pc-relative calls or know that when we do invalidate/replace one of them, that instead of being able to rely on lazy patching that we must trigger an eager update of all calls to them by performing a full code-space fixup operation.
We also need a compile-time checking mechanism (like that used for uninterruptibility) to ensure that the annotations are complete.