/* ----------------------------------------------------------------------------
- * $Id: Constants.h,v 1.7 1999/10/27 09:58:36 simonmar Exp $
+ * $Id: Constants.h,v 1.14 2000/08/07 23:37:23 qrczak Exp $
*
* (c) The GHC Team, 1998-1999
*
Header Sizes
NOTE: keep these in line with the real definitions in Closures.h
+ HWL: checked GRAN_HDR_SIZE; ok
-------------------------------------------------------------------------- */
#define STD_HDR_SIZE 1
#define PROF_HDR_SIZE 1
#define GRAN_HDR_SIZE 1
+#define PAR_HDR_SIZE 0
#define TICKY_HDR_SIZE 0
-#define ARR_HDR_SIZE 1
+#define ARR_WORDS_HDR_SIZE 1
+#define ARR_PTRS_HDR_SIZE 2
/* -----------------------------------------------------------------------------
Info Table sizes
NOTE: keep these in line with the real definitions in InfoTables.h
NOTE: the PROF, and GRAN values are *wrong* (ToDo)
+ HWL: checked GRAN_ITBL_SIZE; ok
-------------------------------------------------------------------------- */
#define STD_ITBL_SIZE 3
#define PROF_ITBL_SIZE 1
#define GRAN_ITBL_SIZE 1
+#define PAR_ITBL_SIZE 0
#define TICKY_ITBL_SIZE 0
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
Update Frame Layout
+ GranSim uses an additional word as bitmask in the update frame; actually,
+ not really necessary, but uses standard closure layout that way
+ NB: UF_RET etc are *wrong* in a GranSim setup; should be increased by 1
+ if compiling for GranSim (currently not used in compiler) -- HWL
-------------------------------------------------------------------------- */
-
#define NOSCC_UF_SIZE 3
+#define GRAN_UF_SIZE 4
#define SCC_UF_SIZE 4
#define UF_RET 0
SEQ frame size
I don't think seq frames really need sccs --SDM
+ They don't need a GranSim bitmask either, but who cares anyway -- HWL
-------------------------------------------------------------------------- */
#define NOSCC_SEQ_FRAME_SIZE 2
+#define GRAN_SEQ_FRAME_SIZE 3
#define SCC_SEQ_FRAME_SIZE 3
/* -----------------------------------------------------------------------------
#define INT64_SIZE 2
#endif
+
+/*---- The size of StgWord, in bytes. */
+#define WORD_SIZE SIZEOF_VOID_P
+
/*---- Maximum number of constructors in a data type for direct-returns. */
#define MAX_VECTORED_RTN 8
-/*---- Range of built-in table of static small int-like closures. */
+/*---- Range of built-in table of static small int-like and char-like closures. */
-#define MAX_INTLIKE (16)
+#define MAX_INTLIKE 16
#define MIN_INTLIKE (-16)
+#define MAX_CHARLIKE 255
+#define MIN_CHARLIKE 0
+
+/* You can change these constants (I hope) but be sure to modify
+ rts/StgMiscClosures.hs accordingly. */
+
/*---- Minimum number of words left in heap after GC to carry on */
#define HEAP_HWM_WORDS 1024
#define INFO_FIRST_TAG 0
/* -----------------------------------------------------------------------------
- Context switch timing constants.
- -------------------------------------------------------------------------- */
-
-#define CS_MAX_FREQUENCY 100 /* context switches per second */
-#define CS_MIN_MILLISECS (1000/CS_MAX_FREQUENCY)/* milliseconds per slice */
-
-/* -----------------------------------------------------------------------------
How much C stack to reserve for local temporaries when in the STG
world. Used in StgRun.S and StgCRun.c.
-------------------------------------------------------------------------- */
-#define RESERVED_C_STACK_BYTES (512 * SIZEOF_LONG)
+#define RESERVED_C_STACK_BYTES (2048 * SIZEOF_LONG)
/* -----------------------------------------------------------------------------
How much Haskell stack space to reserve for the saving of registers