[project @ 2001-08-01 12:07:50 by simonmar]
Signification cleanup & rewrite of CmLink. Fixes at least one bug: the PersistentLinkerState could sometimes get out of step with the RTS's idea of which modules were loaded, leading to an unloadObj failure when we try to unload the same module twice. This could happen if a ^C exception is received in the middle of a :load. Fixed by keeping the part of the linker's state that must match up with the RTS's internal state entirely private to CmLink, stored in a global variable. The operations in CmLink which manipulate this state are now wrapped by Exception.block, and so are safe from ^C exceptions.