One of the problems of a lack of good VM/app separation is the danger of infinite regress in some critical code sections. One mechanism for this is barriers.
As an example, a write barrier may trigger a slow path allocation request (because the write buffer was exhausted). That request may call through to the Map class. If the code in the map class includes write barriers, it is possible that the write barrier will need space and call through to the Map class again. Not sure if that actually arises in practice, but I have seen an allocation request trigger a write barrier, trigger an allocation request, sending the VM into livelock on boot. This only happened when using an object remembering barrier, which may be more demanding.
For now we have a rather horrible hack which bypasses barriers. See r14114.