author Benjamin Smedberg <>
Wed, 11 Mar 2009 10:10:19 -0400
changeset 26043 d4f0e362a0a53f1aa50d43ef09a7a274286be3a0
parent 1 9b2a99adc05e53cd4010de512f50118594756650
child 42264 11ef0c724251f50524827d060a25e8489ce91c99
permissions -rw-r--r--
Bug 481102 - Reorganize dom/public, dom/public/base, and dom/src/base to dom/base, r+sr=jst

/* internal.h

   Internal definitions used by Expat.  This is not needed to compile
   client code.

   The following calling convention macros are defined for frequently
   called functions:

   FASTCALL    - Used for those internal functions that have a simple
                 body and a low number of arguments and local variables.

   PTRCALL     - Used for functions called though function pointers.

   PTRFASTCALL - Like PTRCALL, but for low number of arguments.

   inline      - Used for selected internal functions for which inlining
                 may improve performance on some platforms.

   Note: Use of these macros is based on judgement, not hard rules,
         and therefore subject to change.

#if defined(__GNUC__) && defined(__i386__)
/* We'll use this version by default only where we know it helps.

   regparm() generates warnings on Solaris boxes.   See SF bug #692878.

   Instability reported with egcs on a RedHat Linux 7.3.
   Let's comment out:
   #define FASTCALL __attribute__((stdcall, regparm(3)))
   and let's try this:
#define FASTCALL __attribute__((regparm(3)))
#define PTRFASTCALL __attribute__((regparm(3)))

/* Using __fastcall seems to have an unexpected negative effect under
   MS VC++, especially for function pointers, so we won't use it for
   now on that platform. It may be reconsidered for a future release
   if it can be made more effective.
   Likely reason: __fastcall on Windows is like stdcall, therefore
   the compiler cannot perform stack optimizations for call clusters.

/* Make sure all of these are defined if they aren't already. */

#ifndef FASTCALL
#define FASTCALL

#ifndef PTRCALL
#define PTRCALL


#ifndef XML_MIN_SIZE
#if !defined(__cplusplus) && !defined(inline)
#ifdef __GNUC__
#define inline __inline
#endif /* __GNUC__ */
#endif /* XML_MIN_SIZE */

#ifdef __cplusplus
#define inline inline
#ifndef inline
#define inline