Annotation of embedaddon/expat/lib/internal.h, revision 1.1
1.1 ! misho 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>