{-# OPTIONS_JHC -fno-prelude -fffi -fm4 #-} module System.Mem.StableName(StableName(),makeStableName,hashStableName) where import Jhc.Basics import Jhc.IO import Jhc.Order m4_include(Jhc/Order.m4) data StableName a = StableName BitsPtr_ makeStableName :: a -> IO (StableName a) makeStableName x = returnIO $ StableName (toHeapAddr x) hashStableName :: StableName a -> Int hashStableName (StableName a) = bitsPtrToInt (jhc_hashptr a) foreign import primitive toHeapAddr :: a -> BitsPtr_ foreign import primitive "U2U" bitsPtrToInt :: BitsPtr_ -> Int foreign import jhc_hashptr :: BitsPtr_ -> BitsPtr_ INST_EQORDER((StableName a),StableName,BitsPtr_,U)