X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FConstants.lhs;h=f52c4838714e4826693628ae98ef8c10c75638b7;hb=4cef3202f8067fc3e9860e7a2b72c10b313b7366;hp=14f466777c57ed56bcdefa905f369f403fae20f4;hpb=1b28d4e1f43185ad8c8e7407c66413e1b358402b;p=ghc-hetmet.git diff --git a/ghc/compiler/main/Constants.lhs b/ghc/compiler/main/Constants.lhs index 14f4667..f52c483 100644 --- a/ghc/compiler/main/Constants.lhs +++ b/ghc/compiler/main/Constants.lhs @@ -14,8 +14,6 @@ module Constants ( mAX_SPEC_SELECTEE_SIZE, mAX_SPEC_AP_SIZE, - tARGET_MIN_INT, tARGET_MAX_INT, - mIN_UPD_SIZE, mIN_SIZE_NonUpdHeapObject, @@ -23,7 +21,10 @@ 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, + rESERVED_STACK_WORDS, sTD_ITBL_SIZE, pROF_ITBL_SIZE, @@ -57,6 +58,7 @@ module Constants ( oTHER_TAG, mAX_INTLIKE, mIN_INTLIKE, + mAX_CHARLIKE, mIN_CHARLIKE, spRelToInt, @@ -64,7 +66,10 @@ module Constants ( iNT64_SIZE, wORD64_SIZE, - interfaceFileFormatVersion + wORD_SIZE, + + bLOCK_SIZE, + bLOCK_SIZE_W ) where @@ -104,22 +109,6 @@ mIN_UPD_SIZE = (MIN_UPD_SIZE::Int) mIN_SIZE_NonUpdHeapObject = (MIN_NONUPD_SIZE::Int) \end{code} -If we're compiling with GHC (and we're not cross-compiling), then we -know that minBound and maxBound :: Int are the right values for the -target architecture. Otherwise, we assume -2^31 and 2^31-1 -respectively (which will be wrong on a 64-bit machine). - -\begin{code} -tARGET_MIN_INT, tARGET_MAX_INT :: Integer -#if __GLASGOW_HASKELL__ -tARGET_MIN_INT = toInteger (minBound :: Int) -tARGET_MAX_INT = toInteger (maxBound :: Int) -#else -tARGET_MIN_INT = -2147483648 -tARGET_MAX_INT = 2147483647 -#endif -\end{code} - Constants for semi-tagging; the tags associated with the data constructors will start at 0 and go up. @@ -131,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 @@ -196,11 +189,12 @@ 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) +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. @@ -220,10 +214,29 @@ wORD64_SIZE = (WORD64_SIZE :: Int) iNT64_SIZE = (INT64_SIZE :: Int) \end{code} -The version of the interface file format we're -using: +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 = (WORD_SIZE :: Int) +\end{code} + +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}