use UniqSupply in FastString?

Nicolas Frisby nicolas.frisby at gmail.com
Fri Jul 5 19:14:06 CEST 2013


Does it sound reasonable to change the FastString module to use a
UniqSupply instead of using that Int for generating uniques?

I've been trying to let a statically-linked compiler shares its FastString
table with plugins. Status, background info, options here:

  http://hackage.haskell.org/trac/ghc/wiki/Plugins/ReinitializeGlobals

(I got a little ahead of myself with Option 2…)

Uniques for FastStrings are currently allocated linearly using a global Int
variable. Because unsafePerformIO is used, it's difficult to keep the two
global Ints in synch (one for the compiler, the other for the plugins). The
danger is that the compiler and a plugin might allocate the same unique for
distinct FastStrings — that'd break a major invariant. If we used
UniqSupply, we'd avoid that danger, just about for free.

I'm not sure how robust/speedy UniqSupply is though. Considering its
widespread use, I figured it'd be good enough by a pretty wide margin;
FastString *creation* seems relatively infrequent.

Thanks for your input.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/ghc-devs/attachments/20130705/16cb44ce/attachment.htm>


More information about the ghc-devs mailing list