getUniqueNat :: NatM Unique
getUniqueNat = NatM $ \ (NatM_State us delta imports pic dflags) ->
- case splitUniqSupply us of
- (us1,us2) -> (uniqFromSupply us1, (NatM_State us2 delta imports pic dflags))
+ case takeUniqFromSupply us of
+ (uniq, us') -> (uniq, (NatM_State us' delta imports pic dflags))
getDynFlagsNat :: NatM DynFlags
getBlockIdNat :: NatM BlockId
getBlockIdNat
= do u <- getUniqueNat
- return (BlockId u)
+ return (mkBlockId u)
getNewLabelNat :: NatM CLabel
getNewRegNat :: Size -> NatM Reg
getNewRegNat rep
= do u <- getUniqueNat
- return (targetMkVReg u rep)
+ return (RegVirtual $ targetMkVirtualReg u rep)
getNewRegPairNat :: Size -> NatM (Reg,Reg)
getNewRegPairNat rep
= do u <- getUniqueNat
- let lo = targetMkVReg u rep; hi = getHiVRegFromLo lo
- return (lo,hi)
+ let vLo = targetMkVirtualReg u rep
+ let lo = RegVirtual $ targetMkVirtualReg u rep
+ let hi = RegVirtual $ getHiVirtualRegFromLo vLo
+ return (lo, hi)
getPicBaseMaybeNat :: NatM (Maybe Reg)