2 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1994
4 \section[Constants]{Info about this compilation}
6 !!!!! THIS CODE MUST AGREE WITH SMinterface.h !!!!!!
8 *** This SHOULD BE the only module that is CPP'd with "stgdefs.h" stuff.
12 uNFOLDING_USE_THRESHOLD,
13 uNFOLDING_CREATION_THRESHOLD,
14 iNTERFACE_UNFOLD_THRESHOLD,
15 lIBERATE_CASE_THRESHOLD,
16 uNFOLDING_CHEAP_OP_COST,
17 uNFOLDING_DEAR_OP_COST,
18 uNFOLDING_NOREP_LIT_COST,
19 uNFOLDING_CON_DISCOUNT_WEIGHT,
20 uNFOLDING_KEENESS_FACTOR,
24 mAX_SPEC_MIXED_FIELDS,
25 mAX_SPEC_SELECTEE_SIZE,
27 tARGET_MIN_INT, tARGET_MAX_INT,
30 mIN_SIZE_NonUpdHeapObject,
31 mIN_SIZE_NonUpdStaticHeapObject,
33 mAX_FAMILY_SIZE_FOR_VEC_RETURNS,
35 sTD_UF_SIZE, cON_UF_SIZE,
36 sCC_STD_UF_SIZE, sCC_CON_UF_SIZE,
50 oTHER_TAG, iND_TAG, -- semi-tagging stuff
61 mAX_INTLIKE, mIN_INTLIKE,
68 -- This magical #include brings in all the everybody-knows-these magic
69 -- constants unfortunately, we need to be *explicit* about which one
70 -- we want; if we just hope a -I... will get the right one, we could
73 #include "HsVersions.h"
74 #include "../../includes/GhcConstants.h"
81 uNFOLDING_USE_THRESHOLD = ( 8 :: Int)
82 uNFOLDING_CREATION_THRESHOLD = (30 :: Int) -- Discounts can be big
83 iNTERFACE_UNFOLD_THRESHOLD = (30 :: Int)
84 lIBERATE_CASE_THRESHOLD = (10 :: Int)
86 uNFOLDING_CHEAP_OP_COST = ( 1 :: Int)
87 uNFOLDING_DEAR_OP_COST = ( 4 :: Int)
88 uNFOLDING_NOREP_LIT_COST = ( 20 :: Int) -- Strings can be pretty big
89 uNFOLDING_CON_DISCOUNT_WEIGHT = ( 3 :: Int)
90 uNFOLDING_KEENESS_FACTOR = ( 2.0 :: Float)
94 mAX_SPEC_ALL_PTRS = (MAX_SPEC_ALL_PTRS :: Int)
95 mAX_SPEC_ALL_NONPTRS = (MAX_SPEC_ALL_NONPTRS :: Int)
96 mAX_SPEC_MIXED_FIELDS = (MAX_SPEC_OTHER_SIZE :: Int)
97 mAX_SPEC_SELECTEE_SIZE = (MAX_SPEC_SELECTEE_SIZE :: Int)
99 -- closure sizes: these do NOT include the header
100 mIN_UPD_SIZE = (MIN_UPD_SIZE::Int)
101 mIN_SIZE_NonUpdHeapObject = (MIN_NONUPD_SIZE::Int)
102 mIN_SIZE_NonUpdStaticHeapObject = (0::Int)
105 Sizes of gmp objects:
107 mIN_MP_INT_SIZE = (MIN_MP_INT_SIZE :: Int)
108 mP_STRUCT_SIZE = (MP_STRUCT_SIZE :: Int)
112 tARGET_MIN_INT, tARGET_MAX_INT :: Integer
113 tARGET_MIN_INT = -536870912
114 tARGET_MAX_INT = 536870912
117 Constants for semi-tagging; the tags associated with the data
118 constructors will start at 0 and go up.
120 oTHER_TAG = (INFO_OTHER_TAG :: Integer) -- (-1) unevaluated, probably
121 iND_TAG = (INFO_IND_TAG :: Integer) -- (-2) NOT USED, REALLY
124 Stuff for liveness masks:
126 lIVENESS_R1 = (LIVENESS_R1 :: Int)
127 lIVENESS_R2 = (LIVENESS_R2 :: Int)
128 lIVENESS_R3 = (LIVENESS_R3 :: Int)
129 lIVENESS_R4 = (LIVENESS_R4 :: Int)
130 lIVENESS_R5 = (LIVENESS_R5 :: Int)
131 lIVENESS_R6 = (LIVENESS_R6 :: Int)
132 lIVENESS_R7 = (LIVENESS_R7 :: Int)
133 lIVENESS_R8 = (LIVENESS_R8 :: Int)
137 mIN_INTLIKE, mAX_INTLIKE :: Integer -- Only used to compare with (MachInt Integer)
138 mIN_INTLIKE = MIN_INTLIKE
139 mAX_INTLIKE = MAX_INTLIKE
143 -- THESE ARE DIRECTION SENSITIVE!
144 spARelToInt :: Int{-VirtualSpAOffset-} -> Int{-VirtualSpAOffset-} -> Int
145 spBRelToInt :: Int{-VirtualSpBOffset-} -> Int{-VirtualSpBOffset-} -> Int
147 spARelToInt spA off = spA - off -- equiv to: AREL(spA - off)
148 spBRelToInt spB off = off - spB -- equiv to: BREL(spB - off)
151 A section of code-generator-related MAGIC CONSTANTS.
153 mAX_FAMILY_SIZE_FOR_VEC_RETURNS = (MAX_VECTORED_RTN::Int) -- pretty arbitrary
154 -- If you change this, you may need to change runtimes/standard/Update.lhc
156 -- The update frame sizes
157 sTD_UF_SIZE = (NOSCC_STD_UF_SIZE::Int)
158 cON_UF_SIZE = (NOSCC_CON_UF_SIZE::Int)
160 -- Same again, with profiling
161 sCC_STD_UF_SIZE = (SCC_STD_UF_SIZE::Int)
162 sCC_CON_UF_SIZE = (SCC_CON_UF_SIZE::Int)
164 -- Offsets in an update frame. They don't change with profiling!
165 uF_RET = (UF_RET::Int)
166 uF_SUB = (UF_SUB::Int)
167 uF_SUA = (UF_SUA::Int)
168 uF_UPDATEE = (UF_UPDATEE::Int)
169 uF_COST_CENTRE = (UF_COST_CENTRE::Int)
173 mAX_Vanilla_REG = (MAX_VANILLA_REG :: Int)
174 mAX_Float_REG = (MAX_FLOAT_REG :: Int)
175 mAX_Double_REG = (MAX_DOUBLE_REG :: Int)