cvs commit: fptools/libraries/base/Data Typeable.hs fptools/ghc/rts Linker.c

Simon Marlow simonmar@glass.cse.ogi.edu
Wed, 10 Sep 2003 07:45:26 -0700


simonmar    2003/09/10 07:45:26 PDT

  Modified files:
    libraries/base/Data  Typeable.hs 
    ghc/rts              Linker.c 
  Log:
  Quick hack to work around the dynamic exception crashes in GHCi.  The
  problem is this: the Data.Typeable library (Data.Dymamic in previous
  versions of GHC) maintains an internal cache mapping type names to
  unique numbers, and this cache is used for fast comparisons on
  TypeReps.  In GHCi, there are actually two versions of the
  Data.Typeable library loaded: one linked to GHCi itself, and the other
  dynamically loaded, so there are two copies of the hash tables.
  
  The problem is that if we have a Dynamic value generated using one set
  of hash tables, it will erroneously appear to be of a different type
  when the other hash tables are used.
  
  The hack I've instigated is to use the central RTS genSym (which
  already exists) to generate the unique Ids, so that the two copies of
  the dynamic library will be using distinct Ids, and Dynamics from one
  will never be recognisable to the other.
  
  Revision  Changes    Path
  1.7       +19 -0     fptools/libraries/base/Data/Typeable.hs
  1.128     +2 -1      fptools/ghc/rts/Linker.c