Make the dynamic linker thread-safe.
authorThomas Schilling <nominolo@googlemail.com>
Mon, 17 Aug 2009 14:23:52 +0000 (14:23 +0000)
committerThomas Schilling <nominolo@googlemail.com>
Mon, 17 Aug 2009 14:23:52 +0000 (14:23 +0000)
commit4fa44a3ae9c36222ccb460ba3ed24e46bf7c70ae
tree3a141c84806004f03f59862ca77364380c2ba18d
parent9f68c34843602e815e71ef68f43adc01da993672
Make the dynamic linker thread-safe.

The current implementation is rather pessimistic.  The persistent
linker state is now an MVar and all exported Linker functions are
wrapped in modifyMVar calls.  This is serves as a big lock around all
linker functions.

There might be a chance for more concurrency in a few places. E.g.,
extending the closure environment and loading packages might be
independent in some cases.  But for now it's better to be on the safe
side.
compiler/HsVersions.h
compiler/ghci/Linker.lhs
compiler/utils/Util.lhs