X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Frts%2FPrimOps.cmm;fp=ghc%2Frts%2FPrimOps.cmm;h=ff959430ef0bf66cd0d9c820202a598a7039d069;hb=91b07216be1cb09230b7d1b417899ddea8620ff3;hp=01b4138bcdccfbb1845699df8c659d9cbbfa1996;hpb=da69fa9c5047c5b0d05bdb05eaddefa1eb5d5a36;p=ghc-hetmet.git diff --git a/ghc/rts/PrimOps.cmm b/ghc/rts/PrimOps.cmm index 01b4138..ff95943 100644 --- a/ghc/rts/PrimOps.cmm +++ b/ghc/rts/PrimOps.cmm @@ -159,7 +159,7 @@ newMutVarzh_fast ALLOC_PRIM( SIZEOF_StgMutVar, R1_PTR, newMutVarzh_fast); mv = Hp - SIZEOF_StgMutVar + WDS(1); - SET_HDR(mv,stg_MUT_VAR_info,W_[CCCS]); + SET_HDR(mv,stg_MUT_VAR_DIRTY_info,W_[CCCS]); StgMutVar_var(mv) = R1; RET_P(mv); @@ -207,7 +207,7 @@ atomicModifyMutVarzh_fast HP_CHK_GEN_TICKY(SIZE, R1_PTR & R2_PTR, atomicModifyMutVarzh_fast); #if defined(SMP) - foreign "C" ACQUIRE_LOCK(sm_mutex "ptr"); + foreign "C" ACQUIRE_LOCK(sm_mutex "ptr") [R1,R2]; #endif x = StgMutVar_var(R1); @@ -228,6 +228,7 @@ atomicModifyMutVarzh_fast StgThunk_payload(y,0) = z; StgMutVar_var(R1) = y; + foreign "C" dirty_MUT_VAR(R1) [R1]; TICK_ALLOC_THUNK_1(); CCCS_ALLOC(THUNK_1_SIZE);