You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.0 KiB
73 lines
2.0 KiB
/* 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))) |
|
#endif |
|
|
|
/* 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 |
|
#endif |
|
|
|
#ifndef PTRCALL |
|
#define PTRCALL |
|
#endif |
|
|
|
#ifndef PTRFASTCALL |
|
#define PTRFASTCALL |
|
#endif |
|
|
|
#ifndef XML_MIN_SIZE |
|
#if !defined(__cplusplus) && !defined(inline) |
|
#ifdef __GNUC__ |
|
#define inline __inline |
|
#endif /* __GNUC__ */ |
|
#endif |
|
#endif /* XML_MIN_SIZE */ |
|
|
|
#ifdef __cplusplus |
|
#define inline inline |
|
#else |
|
#ifndef inline |
|
#define inline |
|
#endif |
|
#endif
|
|
|