On Monday, August 20, 2018 11:56:44 AM EDT Simon Peyton Jones via ghc-devs 
wrote:
> I defer to SimonM but IIRC each stable name corresponds to an entry in the 
> stable-name table; the index in the table is the “stable” thing in a stable 
> name.  So I bet that comparison compares these indices.
> 
> If two stable names are pointer-equal, they presumably contain the same index 
> into the table.
> 
> But is the reverse true?  That is, can we be sure that two pointer-distinct 
> stable name objects contain different indices?

I believe so, yes. Each stable name table entry has a pointer to the linked 
stable name object. Calling makeStableName# checks whether the passed pointer 
already has a stable name, and, if so, returns the linked stable name object. 
The design seems a bit surprising to me, but it looks like that's actually how 
it works, at least for now. Each call locks the stable name table, so it 
shouldn't be possible to miss entry creation.
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to