File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / expat / lib / internal.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Feb 21 23:00:54 2012 UTC (12 years, 4 months ago) by misho
Branches: expat, MAIN
CVS tags: v2_1_0, v2_0_1p0, v2_0_1, HEAD
expat

    1: /* internal.h
    2: 
    3:    Internal definitions used by Expat.  This is not needed to compile
    4:    client code.
    5: 
    6:    The following calling convention macros are defined for frequently
    7:    called functions:
    8: 
    9:    FASTCALL    - Used for those internal functions that have a simple
   10:                  body and a low number of arguments and local variables.
   11: 
   12:    PTRCALL     - Used for functions called though function pointers.
   13: 
   14:    PTRFASTCALL - Like PTRCALL, but for low number of arguments.
   15: 
   16:    inline      - Used for selected internal functions for which inlining
   17:                  may improve performance on some platforms.
   18: 
   19:    Note: Use of these macros is based on judgement, not hard rules,
   20:          and therefore subject to change.
   21: */
   22: 
   23: #if defined(__GNUC__) && defined(__i386__) && !defined(__MINGW32__)
   24: /* We'll use this version by default only where we know it helps.
   25: 
   26:    regparm() generates warnings on Solaris boxes.   See SF bug #692878.
   27: 
   28:    Instability reported with egcs on a RedHat Linux 7.3.
   29:    Let's comment out:
   30:    #define FASTCALL __attribute__((stdcall, regparm(3)))
   31:    and let's try this:
   32: */
   33: #define FASTCALL __attribute__((regparm(3)))
   34: #define PTRFASTCALL __attribute__((regparm(3)))
   35: #endif
   36: 
   37: /* Using __fastcall seems to have an unexpected negative effect under
   38:    MS VC++, especially for function pointers, so we won't use it for
   39:    now on that platform. It may be reconsidered for a future release
   40:    if it can be made more effective.
   41:    Likely reason: __fastcall on Windows is like stdcall, therefore
   42:    the compiler cannot perform stack optimizations for call clusters.
   43: */
   44: 
   45: /* Make sure all of these are defined if they aren't already. */
   46: 
   47: #ifndef FASTCALL
   48: #define FASTCALL
   49: #endif
   50: 
   51: #ifndef PTRCALL
   52: #define PTRCALL
   53: #endif
   54: 
   55: #ifndef PTRFASTCALL
   56: #define PTRFASTCALL
   57: #endif
   58: 
   59: #ifndef XML_MIN_SIZE
   60: #if !defined(__cplusplus) && !defined(inline)
   61: #ifdef __GNUC__
   62: #define inline __inline
   63: #endif /* __GNUC__ */
   64: #endif
   65: #endif /* XML_MIN_SIZE */
   66: 
   67: #ifdef __cplusplus
   68: #define inline inline
   69: #else
   70: #ifndef inline
   71: #define inline
   72: #endif
   73: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>