X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2FPrimOps.cmm;h=5c9cfb75ad87ab00c3440bc4612993497a2db5f3;hb=0885017a4e92fe5710d1427c214adb87b92987e5;hp=701654af49db72e31c77995aecee9bdf3082e9a4;hpb=59977b6c7cc81777dc6f8266c68945d1ab691aec;p=ghc-hetmet.git diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm index 701654a..5c9cfb7 100644 --- a/rts/PrimOps.cmm +++ b/rts/PrimOps.cmm @@ -230,6 +230,25 @@ stg_newMutVarzh RET_P(mv); } +stg_casMutVarzh + /* MutVar# s a -> a -> a -> State# s -> (# State#, Int#, a #) */ +{ + W_ mv, old, new, h; + + mv = R1; + old = R2; + new = R3; + + (h) = foreign "C" cas(mv + SIZEOF_StgHeader + OFFSET_StgMutVar_var, + old, new) []; + if (h != old) { + RET_NP(1,h); + } else { + RET_NP(0,h); + } +} + + stg_atomicModifyMutVarzh { W_ mv, f, z, x, y, r, h;