[project @ 2001-08-01 12:07:50 by simonmar]
authorsimonmar <unknown>
Wed, 1 Aug 2001 12:07:50 +0000 (12:07 +0000)
committersimonmar <unknown>
Wed, 1 Aug 2001 12:07:50 +0000 (12:07 +0000)
commitf7828a360867e52b4055cfd5a1223347612ba919
tree4ef47d681253dab736ca01603c82457d008a807e
parentfe5ab8f50175a4e03009431c40e0860b8a60bafb
[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.
ghc/compiler/compMan/CmLink.lhs
ghc/compiler/compMan/CompManager.lhs