1995-08-09 08:06:35 -07:00
|
|
|
/***********************************************************************/
|
|
|
|
/* */
|
1996-04-30 07:53:58 -07:00
|
|
|
/* Objective Caml */
|
1995-08-09 08:06:35 -07:00
|
|
|
/* */
|
|
|
|
/* Xavier Leroy and Damien Doligez, INRIA Rocquencourt */
|
|
|
|
/* */
|
1996-04-30 07:53:58 -07:00
|
|
|
/* Copyright 1996 Institut National de Recherche en Informatique et */
|
1999-11-17 10:59:06 -08:00
|
|
|
/* en Automatique. All rights reserved. This file is distributed */
|
2001-12-07 05:41:02 -08:00
|
|
|
/* under the terms of the GNU Library General Public License, with */
|
|
|
|
/* the special exception on linking described in file ../LICENSE. */
|
1995-08-09 08:06:35 -07:00
|
|
|
/* */
|
|
|
|
/***********************************************************************/
|
|
|
|
|
|
|
|
/* $Id$ */
|
|
|
|
|
1995-05-04 03:15:53 -07:00
|
|
|
#ifndef _config_
|
|
|
|
#define _config_
|
|
|
|
|
2002-02-19 06:37:44 -08:00
|
|
|
/* <include ../config/m.h> */
|
|
|
|
/* <include ../config/s.h> */
|
|
|
|
/* <private> */
|
1996-11-02 10:00:46 -08:00
|
|
|
#if !macintosh
|
1995-05-04 03:15:53 -07:00
|
|
|
#include "../config/m.h"
|
|
|
|
#include "../config/s.h"
|
1996-11-02 10:00:46 -08:00
|
|
|
#else
|
2000-04-05 11:30:22 -07:00
|
|
|
#include <m.h>
|
|
|
|
#include <s.h>
|
1996-11-02 10:00:46 -08:00
|
|
|
#endif
|
2002-02-19 06:37:44 -08:00
|
|
|
/* </private> */
|
1995-05-04 03:15:53 -07:00
|
|
|
|
2000-02-21 10:13:48 -08:00
|
|
|
/* Types for signed chars, 16-bit integers, 32-bit integers, 64-bit integers */
|
2000-02-11 04:03:31 -08:00
|
|
|
|
|
|
|
typedef signed char schar;
|
|
|
|
|
2000-02-21 10:13:48 -08:00
|
|
|
typedef short int16; /* FIXME -- not true on the Cray T3E */
|
|
|
|
typedef unsigned short uint16; /* FIXME -- not true on the Cray T3E */
|
|
|
|
|
2000-02-11 04:03:31 -08:00
|
|
|
#if SIZEOF_INT == 4
|
|
|
|
typedef int int32;
|
|
|
|
typedef unsigned int uint32;
|
|
|
|
#elif SIZEOF_LONG == 4
|
|
|
|
typedef long int32;
|
|
|
|
typedef unsigned long uint32;
|
|
|
|
#elif SIZEOF_SHORT == 4
|
|
|
|
typedef short int32;
|
|
|
|
typedef unsigned short uint32;
|
|
|
|
#endif
|
|
|
|
|
2000-02-11 07:47:09 -08:00
|
|
|
#if defined(ARCH_INT64_TYPE) && defined(ARCH_UINT64_TYPE)
|
|
|
|
typedef ARCH_INT64_TYPE int64;
|
|
|
|
typedef ARCH_UINT64_TYPE uint64;
|
2000-02-11 04:03:31 -08:00
|
|
|
#else
|
|
|
|
/* Int64.t will not be supported, and operations over it are not defined,
|
|
|
|
but we must define the types int64 and uint64 as 64-bit placeholders. */
|
|
|
|
typedef struct { uint32 a, b; } uint64;
|
|
|
|
typedef uint64 int64;
|
|
|
|
#endif
|
|
|
|
|
2002-02-19 06:37:44 -08:00
|
|
|
/* Endianness of floats */
|
|
|
|
|
|
|
|
/* ARCH_FLOAT_ENDIANNESS encodes the byte order of doubles as follows:
|
|
|
|
the value [0xabcdefgh] means that the least significant byte of the
|
|
|
|
float is at byte offset [a], the next lsb at [b], ..., and the
|
|
|
|
most significant byte at [h]. */
|
|
|
|
|
|
|
|
#if defined(__arm__)
|
|
|
|
#define ARCH_FLOAT_ENDIANNESS 0x45670123
|
|
|
|
#elif defined(ARCH_BIG_ENDIAN)
|
|
|
|
#define ARCH_FLOAT_ENDIANNESS 0x76543210
|
|
|
|
#else
|
|
|
|
#define ARCH_FLOAT_ENDIANNESS 0x01234567
|
|
|
|
#endif
|
2000-02-11 04:03:31 -08:00
|
|
|
|
1995-05-04 03:15:53 -07:00
|
|
|
/* Library dependencies */
|
|
|
|
|
|
|
|
/* We use threaded code interpretation if the compiler provides labels
|
1996-11-02 10:00:46 -08:00
|
|
|
as first-class values (GCC 2.x).
|
|
|
|
Macintosh 68k also uses threaded code, with the assembly-language
|
|
|
|
bytecode interpreter (THREADED_CODE defined in config/sm-Mac.h).
|
|
|
|
*/
|
1995-05-04 03:15:53 -07:00
|
|
|
|
1998-03-13 11:59:11 -08:00
|
|
|
#if defined(__GNUC__) && __GNUC__ >= 2 && !defined(DEBUG) && !defined (SHRINKED_GNUC)
|
1995-05-04 03:15:53 -07:00
|
|
|
#define THREADED_CODE
|
|
|
|
#endif
|
|
|
|
|
1995-05-09 02:34:59 -07:00
|
|
|
|
1995-05-04 03:15:53 -07:00
|
|
|
/* Do not change this definition. */
|
|
|
|
#define Page_size (1 << Page_log)
|
|
|
|
|
|
|
|
/* Memory model parameters */
|
|
|
|
|
|
|
|
/* The size of a page for memory management (in bytes) is [1 << Page_log].
|
|
|
|
It must be a multiple of [sizeof (long)]. */
|
|
|
|
#define Page_log 12 /* A page is 4 kilobytes. */
|
|
|
|
|
1995-07-20 00:51:48 -07:00
|
|
|
/* Initial size of stack (bytes). */
|
1995-11-27 07:36:57 -08:00
|
|
|
#define Stack_size (4096 * sizeof(value))
|
1995-05-04 03:15:53 -07:00
|
|
|
|
|
|
|
/* Minimum free size of stack (bytes); below that, it is reallocated. */
|
1995-11-27 07:36:57 -08:00
|
|
|
#define Stack_threshold (256 * sizeof(value))
|
1995-05-04 03:15:53 -07:00
|
|
|
|
1997-05-13 07:45:38 -07:00
|
|
|
/* Default maximum size of the stack (words). */
|
|
|
|
#define Max_stack_def (256 * 1024)
|
1995-07-20 00:51:48 -07:00
|
|
|
|
1995-05-04 03:15:53 -07:00
|
|
|
|
|
|
|
/* Maximum size of a block allocated in the young generation (words). */
|
|
|
|
/* Must be > 4 */
|
|
|
|
#define Max_young_wosize 256
|
|
|
|
|
|
|
|
|
|
|
|
/* Minimum size of the minor zone (words).
|
|
|
|
This must be at least [Max_young_wosize + 1]. */
|
|
|
|
#define Minor_heap_min 4096
|
|
|
|
|
|
|
|
/* Maximum size of the minor zone (words).
|
|
|
|
Must be greater than or equal to [Minor_heap_min].
|
|
|
|
*/
|
|
|
|
#define Minor_heap_max (1 << 28)
|
|
|
|
|
|
|
|
/* Default size of the minor zone. (words) */
|
|
|
|
#define Minor_heap_def 32768
|
|
|
|
|
|
|
|
|
|
|
|
/* Minimum size increment when growing the heap (words).
|
|
|
|
Must be a multiple of [Page_size / sizeof (value)]. */
|
|
|
|
#define Heap_chunk_min (2 * Page_size / sizeof (value))
|
|
|
|
|
|
|
|
/* Maximum size of a contiguous piece of the heap (words).
|
|
|
|
Must be greater than or equal to [Heap_chunk_min].
|
|
|
|
Must be greater than or equal to [Bhsize_wosize (Max_wosize)]. */
|
|
|
|
#define Heap_chunk_max (Bhsize_wosize (Max_wosize))
|
|
|
|
|
1997-05-21 08:28:15 -07:00
|
|
|
/* Default size increment when growing the heap. (words)
|
1995-05-04 03:15:53 -07:00
|
|
|
Must be a multiple of [Page_size / sizeof (value)]. */
|
1997-05-21 08:28:15 -07:00
|
|
|
#define Heap_chunk_def (62 * 1024)
|
1995-05-04 03:15:53 -07:00
|
|
|
|
1997-05-21 08:28:15 -07:00
|
|
|
/* Default initial size of the major heap (words);
|
1997-05-13 07:45:38 -07:00
|
|
|
same constraints as for Heap_chunk_def. */
|
1997-05-21 08:28:15 -07:00
|
|
|
#define Init_heap_def (62 * 1024)
|
1997-05-13 07:45:38 -07:00
|
|
|
|
1995-05-04 03:15:53 -07:00
|
|
|
|
|
|
|
/* Default speed setting for the major GC. The heap will grow until
|
|
|
|
the dead objects and the free list represent this percentage of the
|
2002-01-18 07:13:26 -08:00
|
|
|
total size of live objects. */
|
1997-05-26 10:16:31 -07:00
|
|
|
#define Percent_free_def 42
|
1995-05-04 03:15:53 -07:00
|
|
|
|
2002-01-18 07:13:26 -08:00
|
|
|
/* Default setting for the compacter: 300%
|
|
|
|
(i.e. trigger the compacter when 3/4 of the heap is free) */
|
|
|
|
#define Max_percent_free_def 300
|
1997-05-13 07:45:38 -07:00
|
|
|
|
1995-05-04 03:15:53 -07:00
|
|
|
|
|
|
|
#endif /* _config_ */
|