import CgInfoTbls ( getConstrTag )
import CgUtils ( cmmOffsetW, cmmOffsetB, cmmLoadIndexW )
import Cmm
-import CLabel ( mkMAP_FROZEN_infoLabel )
+import CLabel ( mkMAP_FROZEN_infoLabel, mkMAP_DIRTY_infoLabel )
import CmmUtils
import MachOp
import SMRep
translateOp AddrGtOp = Just mo_wordUGt
translateOp AddrLtOp = Just mo_wordULt
--- 32-bit unsigned ops
+-- Char# ops
-translateOp CharEqOp = Just (MO_Eq I32)
-translateOp CharNeOp = Just (MO_Ne I32)
-translateOp CharGeOp = Just (MO_U_Ge I32)
-translateOp CharLeOp = Just (MO_U_Le I32)
-translateOp CharGtOp = Just (MO_U_Gt I32)
-translateOp CharLtOp = Just (MO_U_Lt I32)
+translateOp CharEqOp = Just (MO_Eq wordRep)
+translateOp CharNeOp = Just (MO_Ne wordRep)
+translateOp CharGeOp = Just (MO_U_Ge wordRep)
+translateOp CharLeOp = Just (MO_U_Le wordRep)
+translateOp CharGtOp = Just (MO_U_Gt wordRep)
+translateOp CharLtOp = Just (MO_U_Lt wordRep)
-- Double ops
= panic "CgPrimOp: doWriteByteArrayOp"
doWritePtrArrayOp addr idx val
- = mkBasicIndexedWrite arrPtrsHdrSize Nothing wordRep addr idx val
+ = do stmtC (setInfo addr (CmmLit (CmmLabel mkMAP_DIRTY_infoLabel)))
+ mkBasicIndexedWrite arrPtrsHdrSize Nothing wordRep addr idx val
mkBasicIndexedRead off Nothing read_rep res base idx