That code is in <ghc root>/rts/STM.c -- ryan
2009/1/30 Daryoush Mehrtash <dmehrt...@gmail.com>: > I like to look at the code where the runtime detects a TVar, inside an > atomic block, has been changed by another thread and hence it aborts the > atomic operation. Any suggestion as to where I would find the code? > > daryoush > > On Sun, Dec 7, 2008 at 10:48 PM, Don Stewart <d...@galois.com> wrote: >> >> dmehrtash: >> > Any idea was the atomically# mean in the following code? >> > >> > atomically :: STM a -> IO a >> > atomically (STM m) = IO (\s -> (atomically# m) s ) >> > >> > Code is from GHC.Conc module >> > >> > [1]http://www.haskell.org/ghc/docs/6.6/html/libraries/base/GHC-Conc.html >> >> It is a primitive hook into the runtime, where transactional memory is >> implemented. >> >> It is documented in the primops module in the GHC source, >> >> $ cd ghc/compiler/prelude/ >> >> >> ------------------------------------------------------------------------ >> section "STM-accessible Mutable Variables" >> >> ------------------------------------------------------------------------ >> >> primtype TVar# s a >> >> primop AtomicallyOp "atomically#" GenPrimOp >> (State# RealWorld -> (# State# RealWorld, a #) ) >> -> State# RealWorld -> (# State# RealWorld, a #) >> with >> out_of_line = True >> has_side_effects = True >> >> primop RetryOp "retry#" GenPrimOp >> State# RealWorld -> (# State# RealWorld, a #) >> with >> out_of_line = True >> has_side_effects = True >> >> >> Along with other primitives like: >> >> ------------------------------------------------------------------------ >> section "Parallelism" >> ------------------------------------------------------------------------ >> >> primop ParOp "par#" GenPrimOp >> a -> Int# >> with >> -- Note that Par is lazy to avoid that the sparked thing >> -- gets evaluted strictly, which it should *not* be >> has_side_effects = True >> >> -- Don > > > > -- > Daryoush > > Weblog: http://perlustration.blogspot.com/ > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe