Deleted Added
full compact
internal.h (104349) internal.h (178848)
1/* internal.h
2
3 Internal definitions used by Expat. This is not needed to compile
4 client code.
5
1/* internal.h
2
3 Internal definitions used by Expat. This is not needed to compile
4 client code.
5
6 The following definitions are made:
6 The following calling convention macros are defined for frequently
7 called functions:
7
8
8 FASTCALL -- Used for most internal functions to specify that the
9 fastest possible calling convention be used.
9 FASTCALL - Used for those internal functions that have a simple
10 body and a low number of arguments and local variables.
10
11
11 inline -- Used for selected internal functions for which inlining
12 may improve performance on some platforms.
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.
13*/
14
21*/
22
15#if defined(__GNUC__)
16/* Last minute instability reported with egcs on a RedHat Linux 7.3
17 box; argh!
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:
18*/
32*/
19/* #define FASTCALL __attribute__((stdcall, regparm(3))) */
20#elif defined(WIN32)
21/* XXX This seems to have an unexpected negative effect on Windows so
22 we'll disable it for now on that platform. It may be reconsidered
23 for a future release if it can be made more effective.
24*/
25/* #define FASTCALL __fastcall */
33#define FASTCALL __attribute__((regparm(3)))
34#define PTRFASTCALL __attribute__((regparm(3)))
26#endif
27
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
28#ifndef FASTCALL
29#define FASTCALL
30#endif
31
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
32#ifndef XML_MIN_SIZE
33#if !defined(__cplusplus) && !defined(inline)
34#ifdef __GNUC__
35#define inline __inline
36#endif /* __GNUC__ */
37#endif
38#endif /* XML_MIN_SIZE */
39
40#ifdef __cplusplus
41#define inline inline
42#else
43#ifndef inline
44#define inline
45#endif
46#endif
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