X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FConstants.lhs;h=6ba8e00fbd409a2472bccb413a43b99519b97731;hb=2ac92d88dfb9a8864fb619225cb997bd23b1b8e1;hp=e24fe836beac36f8d89c851a399b5e881e9b5f47;hpb=88ca0162dc43bf5c36a7fd8af490895a6bacecd9;p=ghc-hetmet.git diff --git a/ghc/compiler/main/Constants.lhs b/ghc/compiler/main/Constants.lhs index e24fe83..6ba8e00 100644 --- a/ghc/compiler/main/Constants.lhs +++ b/ghc/compiler/main/Constants.lhs @@ -5,16 +5,6 @@ \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, @@ -24,16 +14,16 @@ module Constants ( mAX_SPEC_SELECTEE_SIZE, mAX_SPEC_AP_SIZE, - tARGET_MIN_INT, tARGET_MAX_INT, - mIN_UPD_SIZE, mIN_SIZE_NonUpdHeapObject, sTD_HDR_SIZE, pROF_HDR_SIZE, gRAN_HDR_SIZE, - tICKY_HDR_SIZE, - aRR_HDR_SIZE, + aRR_WORDS_HDR_SIZE, + aRR_PTRS_HDR_SIZE, + rESERVED_C_STACK_BYTES, + rESERVED_STACK_WORDS, sTD_ITBL_SIZE, pROF_ITBL_SIZE, @@ -43,13 +33,15 @@ module Constants ( mAX_FAMILY_SIZE_FOR_VEC_RETURNS, uF_SIZE, - sCC_UF_SIZE, + pROF_UF_SIZE, + gRAN_UF_SIZE, -- HWL uF_RET, uF_SU, uF_UPDATEE, - uF_CCS, sEQ_FRAME_SIZE, + pROF_SEQ_FRAME_SIZE, + gRAN_SEQ_FRAME_SIZE, -- HWL mAX_Vanilla_REG, mAX_Float_REG, @@ -64,6 +56,7 @@ module Constants ( oTHER_TAG, mAX_INTLIKE, mIN_INTLIKE, + mAX_CHARLIKE, mIN_CHARLIKE, spRelToInt, @@ -71,7 +64,10 @@ module Constants ( iNT64_SIZE, wORD64_SIZE, - interfaceFileFormatVersion + wORD_SIZE, + + bLOCK_SIZE, + bLOCK_SIZE_W ) where @@ -84,6 +80,8 @@ module Constants ( #include "../includes/config.h" #include "../includes/MachRegs.h" #include "../includes/Constants.h" +#include "../includes/MachDeps.h" +#include "../includes/DerivedConstants.h" -- import Util \end{code} @@ -95,21 +93,8 @@ 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) @@ -124,12 +109,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. @@ -141,6 +120,10 @@ oTHER_TAG = (INFO_OTHER_TAG :: Integer) -- (-1) unevaluated, probably mIN_INTLIKE, mAX_INTLIKE :: Integer -- Only used to compare with (MachInt Integer) mIN_INTLIKE = MIN_INTLIKE mAX_INTLIKE = MAX_INTLIKE + +mIN_CHARLIKE, mAX_CHARLIKE :: Int -- Only used to compare with (MachChar Int) +mIN_CHARLIKE = MIN_CHARLIKE +mAX_CHARLIKE = MAX_CHARLIKE \end{code} A little function that abstracts the stack direction. Note that most @@ -164,20 +147,26 @@ mAX_FAMILY_SIZE_FOR_VEC_RETURNS = (MAX_VECTORED_RTN::Int) -- pretty arbitrary -- If you change this, you may need to change runtimes/standard/Update.lhc -- The update frame sizes -uF_SIZE = (NOSCC_UF_SIZE::Int) +uF_SIZE = (STD_UF_SIZE::Int) -- Same again, with profiling -sCC_UF_SIZE = (SCC_UF_SIZE::Int) +pROF_UF_SIZE = (PROF_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) 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 = (STD_SEQ_FRAME_SIZE::Int) +pROF_SEQ_FRAME_SIZE = (PROF_SEQ_FRAME_SIZE::Int) +gRAN_SEQ_FRAME_SIZE = (GRAN_SEQ_FRAME_SIZE::Int) \end{code} \begin{code} @@ -199,11 +188,11 @@ mAX_Real_Long_REG = (0::Int) 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) +aRR_WORDS_HDR_SIZE = (ARR_WORDS_HDR_SIZE :: Int) +aRR_PTRS_HDR_SIZE = (ARR_PTRS_HDR_SIZE :: Int) \end{code} Info Table sizes. @@ -218,15 +207,34 @@ tICKY_ITBL_SIZE = (TICKY_ITBL_SIZE :: Int) Size of a double in StgWords. \begin{code} -dOUBLE_SIZE = (DOUBLE_SIZE :: Int) -wORD64_SIZE = (WORD64_SIZE :: Int) -iNT64_SIZE = (INT64_SIZE :: Int) +dOUBLE_SIZE = (SIZEOF_DOUBLE `quot` SIZEOF_HSWORD :: Int) +wORD64_SIZE = (8 `quot` SIZEOF_HSWORD :: Int) +iNT64_SIZE = wORD64_SIZE +\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} + +The amount of (Haskell) stack to leave free for saving registers when +returning to the scheduler. + +\begin{code} +rESERVED_STACK_WORDS = (RESERVED_STACK_WORDS :: Int) +\end{code} + +Size of a word, in bytes + +\begin{code} +wORD_SIZE = (SIZEOF_HSWORD :: Int) \end{code} -The version of the interface file format we're -using: +Size of a storage manager block (in bytes). \begin{code} -interfaceFileFormatVersion :: Int -interfaceFileFormatVersion = HscIfaceFileVersion +bLOCK_SIZE = (BLOCK_SIZE :: Int) +bLOCK_SIZE_W = (bLOCK_SIZE `div` wORD_SIZE :: Int) \end{code}