2004-12-15 18:37:23 +03:00
|
|
|
/* 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.
|
|
|
|
|
2010-05-13 16:19:51 +04:00
|
|
|
Note: Use of these macros is based on judgment, not hard rules,
|
2004-12-15 18:37:23 +03:00
|
|
|
and therefore subject to change.
|
|
|
|
*/
|
|
|
|
|
2006-01-23 23:11:08 +03:00
|
|
|
#if defined(__GNUC__) && defined(__i386__)
|
2004-12-15 18:37:23 +03:00
|
|
|
/* 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
|