X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=System%2FMem%2FStableName.hs;h=d7d27a3c51c0932f106fb0ea9e76fb379bfc71ba;hb=41e8fba828acbae1751628af50849f5352b27873;hp=8a3c858bbe6e5e4b8bfd4d42a83a29387633a134;hpb=d539a9457e2c79a9f13744d073d3f253ea2fb33e;p=ghc-base.git diff --git a/System/Mem/StableName.hs b/System/Mem/StableName.hs index 8a3c858..d7d27a3 100644 --- a/System/Mem/StableName.hs +++ b/System/Mem/StableName.hs @@ -1,3 +1,11 @@ +{-# LANGUAGE CPP #-} +#ifdef __GLASGOW_HASKELL__ +{-# LANGUAGE MagicHash #-} +#if !defined(__PARALLEL_HASKELL__) +{-# LANGUAGE UnboxedTuples #-} +#endif +#endif + ----------------------------------------------------------------------------- -- | -- Module : System.Mem.StableName @@ -38,7 +46,7 @@ import Hugs.Stable #endif #ifdef __GLASGOW_HASKELL__ -import GHC.IOBase ( IO(..) ) +import GHC.IO ( IO(..) ) import GHC.Base ( Int(..), StableName#, makeStableName# , eqStableName#, stableNameToInt# ) @@ -55,12 +63,14 @@ import GHC.Base ( Int(..), StableName#, makeStableName# the same object. The reverse is not necessarily true: if two stable names are not - equal, then the objects they name may still be equal. + equal, then the objects they name may still be equal. Note in particular + that `mkStableName` may return a different `StableName` after an + object is evaluated. - Stable Names are similar to Stable Pointers ('Foreign.StablePtr'), + Stable Names are similar to Stable Pointers ("Foreign.StablePtr"), but differ in the following ways: - * There is no @freeStableName@ operation, unlike 'Foreign.StablePtr's. + * There is no @freeStableName@ operation, unlike "Foreign.StablePtr"s. Stable names are reclaimed by the runtime system when they are no longer needed.