[project @ 2000-05-25 12:41:14 by simonpj]
[ghc-hetmet.git] / ghc / compiler / main / Constants.lhs
index 3aa4d59..771b513 100644 (file)
@@ -5,24 +5,15 @@
 
 \begin{code}
 module Constants (
-       uNFOLDING_USE_THRESHOLD,
-       uNFOLDING_CREATION_THRESHOLD,
-       iNTERFACE_UNFOLD_THRESHOLD,
-       lIBERATE_CASE_THRESHOLD,
-       uNFOLDING_CHEAP_OP_COST,
-       uNFOLDING_DEAR_OP_COST,
-       uNFOLDING_NOREP_LIT_COST,
-       uNFOLDING_CON_DISCOUNT_WEIGHT,
-       uNFOLDING_KEENESS_FACTOR,
-
        mAX_CONTEXT_REDUCTION_DEPTH,
        mAX_TUPLE_SIZE,
 
+       mAX_SPEC_THUNK_SIZE,
+       mAX_SPEC_FUN_SIZE,
+       mAX_SPEC_CONSTR_SIZE,
        mAX_SPEC_SELECTEE_SIZE,
        mAX_SPEC_AP_SIZE,
 
-       tARGET_MIN_INT, tARGET_MAX_INT,
-
        mIN_UPD_SIZE,
        mIN_SIZE_NonUpdHeapObject,
 
@@ -30,7 +21,9 @@ module Constants (
        pROF_HDR_SIZE,
        gRAN_HDR_SIZE,
        tICKY_HDR_SIZE,
-       aRR_HDR_SIZE,
+       aRR_WORDS_HDR_SIZE,
+       aRR_PTRS_HDR_SIZE,
+        rESERVED_C_STACK_BYTES,
 
        sTD_ITBL_SIZE,
        pROF_ITBL_SIZE,
@@ -41,12 +34,15 @@ module Constants (
 
        uF_SIZE,
        sCC_UF_SIZE,
+       gRAN_UF_SIZE,  -- HWL
        uF_RET,
        uF_SU,
        uF_UPDATEE,
        uF_CCS,
 
        sEQ_FRAME_SIZE,
+       sCC_SEQ_FRAME_SIZE,
+       gRAN_SEQ_FRAME_SIZE, -- HWL
 
        mAX_Vanilla_REG,
        mAX_Float_REG,
@@ -68,6 +64,8 @@ module Constants (
        iNT64_SIZE,
        wORD64_SIZE,
        
+       bLOCK_SIZE,
+
        interfaceFileFormatVersion
 
     ) where
@@ -92,20 +90,12 @@ mAX_TUPLE_SIZE = (37 :: Int)
 mAX_CONTEXT_REDUCTION_DEPTH = (20 :: Int)
 \end{code}
 
-\begin{code}
-uNFOLDING_USE_THRESHOLD              = ( 8 :: Int)
-uNFOLDING_CREATION_THRESHOLD  = (30 :: Int)    -- Discounts can be big
-iNTERFACE_UNFOLD_THRESHOLD    = (30 :: Int)
-lIBERATE_CASE_THRESHOLD              = (10 :: Int)
-
-uNFOLDING_CHEAP_OP_COST       = ( 1 :: Int)
-uNFOLDING_DEAR_OP_COST        = ( 4 :: Int)
-uNFOLDING_NOREP_LIT_COST      = ( 20 :: Int)   -- Strings can be pretty big
-uNFOLDING_CON_DISCOUNT_WEIGHT = ( 3 :: Int)
-uNFOLDING_KEENESS_FACTOR      = ( 2.0 :: Float)
-\end{code}
 
 \begin{code}
+-- specialised fun/thunk/constr closure types
+mAX_SPEC_THUNK_SIZE   = (MAX_SPEC_THUNK_SIZE :: Int)
+mAX_SPEC_FUN_SIZE     = (MAX_SPEC_FUN_SIZE :: Int)
+mAX_SPEC_CONSTR_SIZE  = (MAX_SPEC_CONSTR_SIZE :: Int)
 
 -- pre-compiled thunk types
 mAX_SPEC_SELECTEE_SIZE = (MAX_SPEC_SELECTEE_SIZE :: Int)
@@ -116,12 +106,6 @@ mIN_UPD_SIZE                       = (MIN_UPD_SIZE::Int)
 mIN_SIZE_NonUpdHeapObject      = (MIN_NONUPD_SIZE::Int)
 \end{code}
 
-\begin{code}
-tARGET_MIN_INT, tARGET_MAX_INT :: Integer
-tARGET_MIN_INT = -536870912
-tARGET_MAX_INT =  536870912
-\end{code}
 Constants for semi-tagging; the tags associated with the data
 constructors will start at 0 and go up.
 
@@ -161,6 +145,9 @@ uF_SIZE     = (NOSCC_UF_SIZE::Int)
 -- Same again, with profiling
 sCC_UF_SIZE = (SCC_UF_SIZE::Int)
 
+-- Same again, with gransim
+gRAN_UF_SIZE = (GRAN_UF_SIZE::Int)
+
 -- Offsets in an update frame.  They don't change with profiling!
 uF_RET         = (UF_RET::Int)
 uF_SU          = (UF_SU::Int)
@@ -168,8 +155,12 @@ uF_UPDATEE     = (UF_UPDATEE::Int)
 uF_CCS         = (UF_CCS::Int)
 \end{code}
 
+Seq frame sizes.
+
 \begin{code}
-sEQ_FRAME_SIZE = (SEQ_FRAME_SIZE::Int)
+sEQ_FRAME_SIZE = (NOSCC_SEQ_FRAME_SIZE::Int)
+sCC_SEQ_FRAME_SIZE = (SCC_SEQ_FRAME_SIZE::Int)
+gRAN_SEQ_FRAME_SIZE = (GRAN_SEQ_FRAME_SIZE::Int)
 \end{code}
 
 \begin{code}
@@ -181,17 +172,22 @@ mAX_Long_REG    = (MAX_LONG_REG  :: Int)
 mAX_Real_Vanilla_REG   = (MAX_REAL_VANILLA_REG :: Int)
 mAX_Real_Float_REG     = (MAX_REAL_FLOAT_REG :: Int)
 mAX_Real_Double_REG    = (MAX_REAL_DOUBLE_REG :: Int)
+#ifdef MAX_REAL_LONG_REG
 mAX_Real_Long_REG      = (MAX_REAL_LONG_REG :: Int)
+#else
+mAX_Real_Long_REG       = (0::Int)
+#endif
 \end{code}
 
 Closure header sizes.
 
 \begin{code}
-sTD_HDR_SIZE   = (STD_HDR_SIZE   :: Int)
-pROF_HDR_SIZE  = (PROF_HDR_SIZE  :: Int)
-gRAN_HDR_SIZE  = (GRAN_HDR_SIZE  :: Int)
-tICKY_HDR_SIZE = (TICKY_HDR_SIZE :: Int)
-aRR_HDR_SIZE   = (ARR_HDR_SIZE   :: Int)
+sTD_HDR_SIZE       = (STD_HDR_SIZE       :: Int)
+pROF_HDR_SIZE      = (PROF_HDR_SIZE      :: Int)
+gRAN_HDR_SIZE      = (GRAN_HDR_SIZE      :: Int)
+tICKY_HDR_SIZE     = (TICKY_HDR_SIZE     :: Int)
+aRR_WORDS_HDR_SIZE = (ARR_WORDS_HDR_SIZE :: Int)
+aRR_PTRS_HDR_SIZE  = (ARR_PTRS_HDR_SIZE  :: Int)
 \end{code}
 
 Info Table sizes.
@@ -211,9 +207,24 @@ wORD64_SIZE    = (WORD64_SIZE   :: Int)
 iNT64_SIZE     = (INT64_SIZE   :: Int)
 \end{code}
 
-The version of the interface file format we're
-using:
+The version of the interface file format we're using.  It's propagated
+here by a devious route from ghc/mk/version.mk.  See comments
+there for what it means.
 
 \begin{code}
+interfaceFileFormatVersion :: Int
 interfaceFileFormatVersion = HscIfaceFileVersion
 \end{code}
+
+This tells the native code generator the size of the spill
+area is has available.
+
+\begin{code}
+rESERVED_C_STACK_BYTES = (RESERVED_C_STACK_BYTES :: Int)
+\end{code}
+
+Size of a storage manager block (in bytes).
+
+\begin{code}
+bLOCK_SIZE = (BLOCK_SIZE :: Int)
+\end{code}