X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fincludes%2FConstants.h;h=4062bcaf638909d8a32e43a9f2113e3fedf6e88a;hb=a1c9a60f9d3b45184f723b454017edcbf258f70e;hp=dc6d3bdbe9457d5cadf1c86f4dffffc901c9813a;hpb=4070b105490709e2fbc40ef926853fc93595b7a6;p=ghc-hetmet.git diff --git a/ghc/includes/Constants.h b/ghc/includes/Constants.h index dc6d3bd..4062bca 100644 --- a/ghc/includes/Constants.h +++ b/ghc/includes/Constants.h @@ -1,13 +1,17 @@ /* ---------------------------------------------------------------------------- - * $Id: Constants.h,v 1.11 2000/02/28 12:02:32 sewardj Exp $ + * $Id: Constants.h,v 1.21 2002/09/23 14:33:50 simonmar Exp $ * * (c) The GHC Team, 1998-1999 * * Constants * - * NOTE: this information is used by both the compiler and the RTS, - * and *must* be kept up-to-date with respect to the rest of the - * world. + * NOTE: this information is used by both the compiler and the RTS. + * Some of it is tweakable, and some of it must be kept up to date + * with various other parts of the system. + * + * Constants which are derived automatically from other definitions in + * the system (eg. structure sizes) are generated into the file + * DerivedConstants.h by a C program (mkDerivedConstantsHdr). * * -------------------------------------------------------------------------- */ @@ -15,40 +19,6 @@ #define CONSTANTS_H /* ----------------------------------------------------------------------------- - 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_WORDS_HDR_SIZE 1 -#define ARR_PTRS_HDR_SIZE 2 - -/* ----------------------------------------------------------------------------- - Info Table sizes - - The native code generator needs to know these things, and can't use - the C sizeof() function. - - 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 - -/* ----------------------------------------------------------------------------- Minimum closure sizes Here We define the minimum size for updatable closures. This must be at @@ -102,33 +72,6 @@ #define MAX_SPEC_CONSTR_SIZE 2 /* ----------------------------------------------------------------------------- - 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 -#define UF_SU 1 -#define UF_UPDATEE 2 -#define UF_CCS 3 - -/* ----------------------------------------------------------------------------- - 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 - -/* ----------------------------------------------------------------------------- STG Registers. Note that in MachRegs.h we define how many of these registers are @@ -141,35 +84,20 @@ /* register is only used for returning (unboxed) 64-bit vals */ #define MAX_LONG_REG 1 -/*---- The size of an StgDouble, in StgWords. */ - -#if SIZEOF_VOID_P == SIZEOF_DOUBLE -#define DOUBLE_SIZE 1 -#else -#define DOUBLE_SIZE 2 -#endif - -/*---- The size of Stg{Int,Word}64e, in StgWords. */ -#if SIZEOF_VOID_P == 8 -#define WORD64_SIZE 1 -#define INT64_SIZE 1 -#else -#define WORD64_SIZE 2 -#define INT64_SIZE 2 -#endif - /*---- 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) -/*---- Minimum number of words left in heap after GC to carry on */ +#define MAX_CHARLIKE 255 +#define MIN_CHARLIKE 0 -#define HEAP_HWM_WORDS 1024 +/* You can change these constants (I hope) but be sure to modify + rts/StgMiscClosures.hs accordingly. */ /* ----------------------------------------------------------------------------- Semi-Tagging constants @@ -190,13 +118,6 @@ #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. -------------------------------------------------------------------------- */ @@ -218,12 +139,10 @@ Storage manager constants -------------------------------------------------------------------------- */ -/* The size of a block */ -#define BLOCK_SIZE 0x1000 +/* The size of a block (2^BLOCK_SHIFT bytes) */ #define BLOCK_SHIFT 12 -/* The size of a megablock */ -#define MBLOCK_SIZE 0x100000 +/* The size of a megablock (2^MBLOCK_SHIFT bytes) */ #define MBLOCK_SHIFT 20 /* the largest size an object can be before we give it a block of its