[project @ 2000-05-15 15:03:36 by simonmar]
[ghc-hetmet.git] / ghc / compiler / nativeGen / MachRegs.lhs
index 446e7dd..81ff772 100644 (file)
@@ -64,11 +64,12 @@ import AbsCUtils    ( magicIdPrimRep )
 import CLabel           ( CLabel )
 import PrimOp          ( PrimOp(..) )
 import PrimRep         ( PrimRep(..) )
-import Stix            ( sStLitLbl, StixTree(..), StixReg(..) )
+import Stix            ( sStLitLbl, StixTree(..), StixReg(..),
+                          getUniqueNat, returnNat, thenNat, NatM )
 import Unique          ( mkPseudoUnique1, mkPseudoUnique2, mkPseudoUnique3,
                          Uniquable(..), Unique
                        )
-import UniqSupply      ( getUniqueUs, returnUs, thenUs, UniqSM )
+--import UniqSupply    ( getUniqueUs, returnUs, thenUs, UniqSM )
 import Outputable
 \end{code}
 
@@ -270,12 +271,12 @@ data Reg
 mkReg :: Unique -> PrimRep -> Reg
 mkReg = UnmappedReg
 
-getNewRegNCG :: PrimRep -> UniqSM Reg
+getNewRegNCG :: PrimRep -> NatM Reg
 getNewRegNCG pk
-  = getUniqueUs        `thenUs` \ u ->
-    returnUs (UnmappedReg u pk)
+  = getUniqueNat `thenNat` \ u ->
+    returnNat (UnmappedReg u pk)
 
-instance Text Reg where
+instance Show Reg where
     showsPrec _ (FixedReg i)   = showString "%"  . shows IBOX(i)
     showsPrec _ (MappedReg i)  = showString "%"  . shows IBOX(i)
     showsPrec _ (MemoryReg i _) = showString "%M"  . shows i
@@ -583,6 +584,8 @@ baseRegOffset (LongReg _ ILIT(2))    = OFFSET_Lng2
 #endif
 baseRegOffset Hp                    = OFFSET_Hp
 baseRegOffset HpLim                 = OFFSET_HpLim
+baseRegOffset CurrentTSO            = OFFSET_CurrentTSO
+baseRegOffset CurrentNursery        = OFFSET_CurrentNursery
 #ifdef DEBUG
 baseRegOffset BaseReg               = panic "baseRegOffset:BaseReg"
 baseRegOffset CurCostCentre         = panic "baseRegOffset:CurCostCentre"
@@ -656,6 +659,12 @@ callerSaves Hp                             = True
 #ifdef CALLER_SAVES_HpLim
 callerSaves HpLim                      = True
 #endif
+#ifdef CALLER_SAVES_CurrentTSO
+callerSaves CurrentTSO                 = True
+#endif
+#ifdef CALLER_SAVES_CurrentNursery
+callerSaves CurrentNursery             = True
+#endif
 callerSaves _                          = False
 \end{code}
 
@@ -734,6 +743,12 @@ magicIdRegMaybe Hp                 = Just (FixedReg ILIT(REG_Hp))
 #ifdef REG_HpLim                       
 magicIdRegMaybe HpLim                  = Just (FixedReg ILIT(REG_HpLim))
 #endif                                 
+#ifdef REG_CurrentTSO                          
+magicIdRegMaybe CurrentTSO             = Just (FixedReg ILIT(REG_CurrentTSO))
+#endif                                 
+#ifdef REG_CurrentNursery                              
+magicIdRegMaybe CurrentNursery         = Just (FixedReg ILIT(REG_CurrentNursery))
+#endif                                 
 magicIdRegMaybe _                      = Nothing
 \end{code}