
@hvr's version is basically just a more concise way to write @parcs'
#8345: A more efficient atomicModifyIORef' -------------------------------------+------------------------------------- Reporter: parcs | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.10.1 Component: | Version: 7.6.3 libraries/base | Keywords: IORef Resolution: | Architecture: Unknown/Multiple Operating System: | Difficulty: Moderate (less Unknown/Multiple | than a day) Type of failure: Runtime | Blocked By: performance bug | Related Tickets: #5926 Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by dfeuer): Replying to [comment:14 simonmar]: proposed version. I'm happy with either. Someone want to put up a diff? I'll be happy to do that. I realized today that if I replace `evaluate` with its specification, I do indeed get the same Core for parcs's and hvr's versions, which of course (conditionally) proves that what you say is true. But using `evaluate` itself gives somewhat different core, because it uses `seq#` to order things properly instead of `case`. I haven't inspected the Cmm or asm output, so I don't know if this makes any difference. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8345#comment:15 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler