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,
uF_CCS,
sEQ_FRAME_SIZE,
+ sCC_SEQ_FRAME_SIZE,
mAX_Vanilla_REG,
mAX_Float_REG,
mAX_Real_Vanilla_REG,
mAX_Real_Float_REG,
mAX_Real_Double_REG,
+ mAX_Real_Long_REG,
oTHER_TAG,
All pretty arbitrary:
\begin{code}
-mAX_TUPLE_SIZE = 37
-mAX_CONTEXT_REDUCTION_DEPTH = 20
+mAX_TUPLE_SIZE = (37 :: Int)
+mAX_CONTEXT_REDUCTION_DEPTH = (20 :: Int)
\end{code}
\begin{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)
mAX_SPEC_AP_SIZE = (MAX_SPEC_AP_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
-tARGET_MIN_INT = -536870912
-tARGET_MAX_INT = 536870912
+#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
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)
\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}
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}