make the smp way RTS-only, normal libraries now work with -smp
authorSimon Marlow <simonmar@microsoft.com>
Wed, 8 Feb 2006 14:33:48 +0000 (14:33 +0000)
committerSimon Marlow <simonmar@microsoft.com>
Wed, 8 Feb 2006 14:33:48 +0000 (14:33 +0000)
commitbeb5737b7ee42c4e9373a505e7d957206d69a30e
tree0651a5ae4dbf1d1cf4036b3393a7b6e1c1b6186a
parent76e3742711eb9eb2fed7654c56e602b54c517e87
make the smp way RTS-only, normal libraries now work with -smp

We had to bite the bullet here and add an extra word to every thunk,
to enable running ordinary libraries on SMP.  Otherwise, we would have
needed to ship an extra set of libraries with GHC 6.6 in addition to
the two sets we already ship (normal + profiled), and all Cabal
packages would have to be compiled for SMP too.  We decided it best
just to take the hit now, making SMP easily accessible to everyone in
GHC 6.6.

Incedentally, although this increases allocation by around 12% on
average, the performance hit is around 5%, and much less if your inner
loop doesn't use any laziness.
32 files changed:
ghc/compiler/codeGen/CgForeignCall.hs
ghc/compiler/codeGen/CgHeapery.lhs
ghc/compiler/codeGen/CgPrimOp.hs
ghc/compiler/codeGen/ClosureInfo.lhs
ghc/compiler/codeGen/SMRep.lhs
ghc/compiler/ghci/ByteCodeAsm.lhs
ghc/compiler/ghci/ByteCodeGen.lhs
ghc/compiler/ghci/ByteCodeInstr.lhs
ghc/compiler/ghci/ByteCodeItbls.lhs
ghc/compiler/main/Constants.lhs
ghc/compiler/main/StaticFlags.hs
ghc/includes/Bytecodes.h
ghc/includes/Closures.h
ghc/includes/Cmm.h
ghc/includes/Constants.h
ghc/includes/Storage.h
ghc/includes/mkDerivedConstants.c
ghc/rts/Apply.cmm
ghc/rts/GC.c
ghc/rts/GCCompact.c
ghc/rts/Interpreter.c
ghc/rts/LdvProfile.c
ghc/rts/LdvProfile.h
ghc/rts/Linker.c
ghc/rts/ProfHeap.c
ghc/rts/RetainerProfile.c
ghc/rts/Sanity.c
ghc/rts/Schedule.c
ghc/rts/Sparks.c
ghc/rts/Sparks.h
ghc/rts/Updates.h
mk/config.mk.in