// config.h -- statically configurable stuff
//
// Author: Ian.Piumarta@inria.fr
//
// last edited: Thu Feb 25 20:45:00 1999 by piumarta (Ian Piumarta) on pingu

#ifndef _config_h_
#define _config_h_

#undef	TORTURE		// abuse GC and context cache for soak-test

#define	LINK_SENDS	// dynamically rewrite send sites with static linkage
#define	USE_AT_CACHE	// subscribe to the Interpreter's atCache mechanism

#undef	USE_METHOD	// if undefined, always go through TM to find method
#undef	CLEAR_CONTEXTS	// zap unused slots (redundant since 2.3beta-d)

#define	PROMOTE_RETURNS	// pull destinations with returns forward into jumps

#define	QUICK_METHODS	// synthesize "non-activating" quick response methods

#ifdef TORTURE
# define	ContextCacheSize	2
# define	AllocsBetweenGCs	10
#else
# define	ContextCacheSize	32
# define	AllocsBetweenGCs	4000
#endif

#define	MethodMemoizerSize	1024	// # buckets
#define	ClassMemoizerSize	1024	// # buckets

// MemoArraySize is the initial size of each memoiser bucket
// MemoArrayFactor is the growth factor on bucket overflow
// setting both to 1 forces 100% utilisation in the buckets

#define	MemoArraySize		2	// initial size
#define	MemoArrayFactor		1.5	// growth factor

#define	CodeCacheSize		(128*1024)	// bytes

// debugging...

#undef	TRACE		// translation and execution listings
#undef	GCTRACE		// print gc phase info
#undef	DEBUG		// okayInterpreterOops and other sanity checks
#define	MARK_OLD	// mark/remap old objects (default and REDUNDANT)

#if !defined(TRACE) && defined(NDEBUG) && !defined(THREADED)
# define THREADED
#endif

#ifdef SPY
# define GATHER_STATS			// essential
# define STAT_DECAY		0.25	// weighted average decay rate
# define MAJOR_UPDATES_PER_SEC	4	// memoiser/send/cache stats
# define MINOR_UPDATES_PER_SEC	10	// jitter blobs and memory map
#else
# undef	GATHER_STATS			// utterly pointless without the spy
#endif


#endif _config_h_

