I note that on some versions of mmap you can speicify a starting address. Therefore if it works you could avoid having to swizzle the pointers when you access the image since they would never change. Otherwise you are back to updating all the object slots at load time.
The method ObjectMemory>>adjustAllOopsBy in my image was last updated by you, I believe (JMM 11/18/2000 17:50). A comment in it says, "Note: Don't bypass this method even if bytesToShift is zero until the RootBit problem has been fixed in the appropriate places", and the code to shortcut the method when bytesToShift = 0 is commented out. I don't see anything new in my .changes file, so I am assuming the comment is current.
I don't know what the RootBit problem is, but the section of code that would be bypassed if the comment were removed is the code that adjusts all of the references, and also clears the RootBit for each object. So if the comment is still correct, then even if the image reloads at the same place, don't you need to still clear each object's RootBit? Or did I misunderstand your point, above?
--- Noel