Double-pointers will require more compiler support. Patching is easier (and still safe).
Safepoints are another issue, there are three major ways to implement them: memory protection games, code patching and polling. The first two can be implemented with zero overhead but are not available on all systems (e.g. XBox or iPhone). And polling requires runtime overhead, sometimes significant.
Then there’s a question of write barrier for card marking if a generational GC is needed.