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