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__)
|
---|
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
|
---|