Only save normalized tfp integers in the tfp-cache
authorChristiaan Baaij <christiaan.baaij@gmail.com>
Mon, 13 Jul 2009 09:22:43 +0000 (11:22 +0200)
committerChristiaan Baaij <christiaan.baaij@gmail.com>
Mon, 13 Jul 2009 09:22:43 +0000 (11:22 +0200)
VHDLTools.hs
VHDLTypes.hs

index a66f92dd4592d181152343909b72393a8d39948f..e7c598d498d322222821bdaf091422ca778e5f96 100644 (file)
@@ -473,9 +473,8 @@ mkHType ty = do
               case elem_htype_either of
                 -- Could create element type
                 Right elem_htype -> do
-                  env <- getA vsHscEnv
-                  let norm_ty = normalise_tfp_int env (tfvec_len_ty ty)
-                  return $ Right $ VecType (OrdType norm_ty) elem_htype
+                  len <- tfp_to_int (tfvec_len_ty ty)
+                  return $ Right $ VecType len elem_htype
                 -- Could not create element type
                 Left err -> return $ Left $ 
                   "VHDLTools.mkHType: Can not construct vectortype for elementtype: " ++ pprString el_ty  ++ "\n"
@@ -528,10 +527,11 @@ tfp_to_int :: Type.Type -> TypeSession Int
 tfp_to_int ty = do
   lens <- getA vsTfpInts
   hscenv <- getA vsHscEnv
-  let existing_len = Map.lookup (OrdType ty) lens
+  let norm_ty = normalise_tfp_int hscenv ty
+  let existing_len = Map.lookup (OrdType norm_ty) lens
   case existing_len of
     Just len -> return len
     Nothing -> do
       let new_len = eval_tfp_int hscenv ty
-      modA vsTfpInts (Map.insert (OrdType ty) (new_len))
+      modA vsTfpInts (Map.insert (OrdType norm_ty) (new_len))
       return new_len
\ No newline at end of file
index b4c1d6981c2f757df4fb7c5049375aa4845bcb59..5562c6a7a0db0fc6cf9eb10654ce88f36fc7a343 100644 (file)
@@ -41,7 +41,7 @@ instance Ord OrdType where
 
 data HType = StdType OrdType |
              ADTType String [HType] |
-             VecType OrdType HType |
+             VecType Int HType |
              SizedWType Int |
              RangedWType Int |
              SizedIType Int |