atomicModifyIORef allocates memory. We really don't need that
much power to implement atomicWriteIORef, so we shouldn't
have to eat the cost. Implement it as a new primop instead.
Note: this is an alternative to D4886.
|No Unit Test Coverage|
|Build 48711: [GHC] Linux/amd64: Continuous Integration|
|Build 48710: [GHC] OSX/amd64: Continuous Integration|
|Build 48709: [GHC] Windows/amd64: Continuous Integration|
|Build 48708: arc lint + arc unit|