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 */
|
1995-08-09 08:06:35 -07:00
|
|
|
/* Automatique. Distributed only by permission. */
|
|
|
|
/* */
|
|
|
|
/***********************************************************************/
|
|
|
|
|
|
|
|
/* $Id$ */
|
|
|
|
|
1995-05-04 03:15:53 -07:00
|
|
|
#ifndef _config_
|
|
|
|
#define _config_
|
|
|
|
|
|
|
|
|
|
|
|
#include "../config/m.h"
|
|
|
|
#include "../config/s.h"
|
|
|
|
|
|
|
|
/* Library dependencies */
|
|
|
|
|
|
|
|
#ifdef HAS_MEMMOVE
|
1995-09-25 07:42:51 -07:00
|
|
|
#undef bcopy
|
1995-05-04 03:15:53 -07:00
|
|
|
#define bcopy(src,dst,len) memmove((dst), (src), (len))
|
|
|
|
#else
|
|
|
|
#ifdef HAS_BCOPY
|
|
|
|
/* Nothing to do */
|
|
|
|
#else
|
1995-09-25 07:42:51 -07:00
|
|
|
#undef bcopy
|
1995-05-04 03:15:53 -07:00
|
|
|
#define bcopy(src,dst,len) memmov((dst), (src), (len))
|
|
|
|
#define USING_MEMMOV
|
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* We use threaded code interpretation if the compiler provides labels
|
|
|
|
as first-class values (GCC 2.x). */
|
|
|
|
|
|
|
|
#if defined(__GNUC__) && __GNUC__ >= 2 && !defined(DEBUG)
|
|
|
|
#define THREADED_CODE
|
|
|
|
#endif
|
|
|
|
|
1995-05-09 02:34:59 -07:00
|
|
|
/* Signed char type */
|
|
|
|
|
|
|
|
#if defined(__STDC__) || defined(SIGNED_CHAR_WORKS)
|
|
|
|
typedef signed char schar;
|
|
|
|
#else
|
|
|
|
typedef char schar;
|
|
|
|
#endif
|
|
|
|
|
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
|
|
|
|
|
|
|
/* Maximum sizes for the stack (bytes). */
|
|
|
|
|
1995-11-27 07:36:57 -08:00
|
|
|
#define Max_stack_size (131072 * sizeof(value))
|
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))
|
|
|
|
|
|
|
|
/* Default size increment when growing the heap. (bytes)
|
|
|
|
Must be a multiple of [Page_size / sizeof (value)]. */
|
|
|
|
#define Heap_chunk_def (62 * Page_size / sizeof (value))
|
|
|
|
|
|
|
|
|
|
|
|
/* Default speed setting for the major GC. The heap will grow until
|
|
|
|
the dead objects and the free list represent this percentage of the
|
|
|
|
heap size. The rest of the heap is live objects. */
|
|
|
|
#define Percent_free_def 30
|
|
|
|
|
|
|
|
|
|
|
|
#endif /* _config_ */
|