Commit 7eb748f5 authored by simonmar's avatar simonmar

[project @ 2002-11-22 13:59:40 by simonmar]

Two files that shouldn't have been on the HEAD (yet)
parent 3b6a5af5
/* -----------------------------------------------------------------------------
* (c) The GHC Team, 2002
*
* Things for functions.
* ---------------------------------------------------------------------------*/
#ifndef STGFUN_H
#define STGFUN_H
/* generic - function comes with a small bitmap */
#define ARG_GEN 0
/* generic - function comes with a large bitmap */
#define ARG_GEN_BIG 1
/* specialised function types: bitmaps and calling sequences
* for these functions are pre-generated (see ghc/utils/genapply), and
* the generated code in ghc/rts/AutoApply.hc.
*/
#define ARG_N 2
#define ARG_P 3
#define ARG_F 4
#define ARG_D 5
#define ARG_L 6
#define ARG_NN 7
#define ARG_NP 8
#define ARG_PN 9
#define ARG_PP 10
#define ARG_FF 11
#define ARG_DD 12
#define ARG_LL 13
#define ARG_NNN 14
#define ARG_NNP 15
#define ARG_NPN 16
#define ARG_NPP 17
#define ARG_PNN 18
#define ARG_PNP 19
#define ARG_PPN 20
#define ARG_PPP 21
#define ARG_PPPP 22
#define ARG_PPPPP 23
#define ARG_PPPPPP 24
#define ARG_PPPPPPP 25
#define ARG_PPPPPPPP 26
#endif // STGFUN_H
/* -----------------------------------------------------------------------------
* $Id$
*
* (c) The GHC Team, 1998-1999
*
* Top-level include file for the RTS itself
*
* ---------------------------------------------------------------------------*/
#ifndef RTS_H
#define RTS_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef IN_STG_CODE
#define IN_STG_CODE 0
#endif
#include "Stg.h"
/* -----------------------------------------------------------------------------
RTS Exit codes
-------------------------------------------------------------------------- */
/* 255 is allegedly used by dynamic linkers to report linking failure */
#define EXIT_INTERNAL_ERROR 254
#define EXIT_DEADLOCK 253
#define EXIT_INTERRUPTED 252
#define EXIT_HEAPOVERFLOW 251
#define EXIT_KILLED 250
/* -----------------------------------------------------------------------------
Miscellaneous garbage
-------------------------------------------------------------------------- */
/* declarations for runtime flags/values */
#define MAX_RTS_ARGS 32
#ifdef _WIN32
/* On the yucky side..suppress -Wmissing-declarations warnings when
* including <windows.h>
*/
extern void* GetCurrentFiber ( void );
extern void* GetFiberData ( void );
#endif
/* -----------------------------------------------------------------------------
Assertions and Debuggery
-------------------------------------------------------------------------- */
#define IF_RTSFLAGS(c,s) if (RtsFlags.c) { s; }
/* -----------------------------------------------------------------------------
Assertions and Debuggery
-------------------------------------------------------------------------- */
#ifdef DEBUG
#define IF_DEBUG(c,s) if (RtsFlags.DebugFlags.c) { s; }
#else
#define IF_DEBUG(c,s) doNothing()
#endif
#ifdef DEBUG
#define DEBUG_ONLY(s) s
#else
#define DEBUG_ONLY(s) doNothing()
#endif
#if defined(GRAN) && defined(DEBUG)
#define IF_GRAN_DEBUG(c,s) if (RtsFlags.GranFlags.Debug.c) { s; }
#else
#define IF_GRAN_DEBUG(c,s) doNothing()
#endif
#if defined(PAR) && defined(DEBUG)
#define IF_PAR_DEBUG(c,s) if (RtsFlags.ParFlags.Debug.c) { s; }
#else
#define IF_PAR_DEBUG(c,s) doNothing()
#endif
/* -----------------------------------------------------------------------------
Attributes
-------------------------------------------------------------------------- */
#ifdef __GNUC__ /* Avoid spurious warnings */
#if __GNUC__ >= 2 && __GNUC_MINOR__ >= 7
#define STG_NORETURN __attribute__ ((noreturn))
#define STG_UNUSED __attribute__ ((unused))
#else
#define STG_NORETURN
#define STG_UNUSED
#endif
#else
#define STG_NORETURN
#define STG_UNUSED
#endif
/* -----------------------------------------------------------------------------
Useful macros and inline functions
-------------------------------------------------------------------------- */
#define stg_min(a,b) ({typeof(a) _a = (a), _b = (b); _a <= _b ? _a : _b; })
#define stg_max(a,b) ({typeof(a) _a = (a), _b = (b); _a <= _b ? _b : _a; })
/* -------------------------------------------------------------------------- */
#ifdef __cplusplus
}
#endif
#endif /* RTS_H */
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment