\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,
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,
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,
mAX_Real_Vanilla_REG,
mAX_Real_Float_REG,
mAX_Real_Double_REG,
+ mAX_Real_Long_REG,
oTHER_TAG,
iNT64_SIZE,
wORD64_SIZE,
+ bLOCK_SIZE,
+
interfaceFileFormatVersion
) where
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)
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.
-- 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)
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}
mAX_Vanilla_REG = (MAX_VANILLA_REG :: Int)
mAX_Float_REG = (MAX_FLOAT_REG :: Int)
mAX_Double_REG = (MAX_DOUBLE_REG :: Int)
+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.
\begin{code}
dOUBLE_SIZE = (DOUBLE_SIZE :: Int)
-mAX_Long_REG = (MAX_LONG_REG :: Int)
wORD64_SIZE = (WORD64_SIZE :: Int)
iNT64_SIZE = (INT64_SIZE :: Int)
\end{code}
using:
\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}