putMVar and takeMVar: add write_barrier() to fix race with throwTo