summaryrefslogtreecommitdiff
path: root/xml/expat/lib/internal.h
diff options
context:
space:
mode:
authorminfrin <minfrin@13f79535-47bb-0310-9956-ffa450edef68>2011-12-06 01:08:40 +0000
committerminfrin <minfrin@13f79535-47bb-0310-9956-ffa450edef68>2011-12-06 01:08:40 +0000
commitaca4351e2f768674a4a6928e634406e7385226d9 (patch)
tree45ba98a0f5e105e8c62181d11c7f5497c422972a /xml/expat/lib/internal.h
parentc83b477521ed2aaf40c6a47d540c665ca9bd539c (diff)
parent796db2a03ab94945939e0e91c269a611463d43a8 (diff)
downloadlibapr-util-1.4.0.tar.gz
Tag v1.4.0.1.4.0
git-svn-id: http://svn.apache.org/repos/asf/apr/apr-util/tags/1.4.0@1210733 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'xml/expat/lib/internal.h')
-rw-r--r--xml/expat/lib/internal.h73
1 files changed, 73 insertions, 0 deletions
diff --git a/xml/expat/lib/internal.h b/xml/expat/lib/internal.h
new file mode 100644
index 00000000..ff056c65
--- /dev/null
+++ b/xml/expat/lib/internal.h
@@ -0,0 +1,73 @@
+/* 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.
+
+ Note: Use of these macros is based on judgement, not hard rules,
+ and therefore subject to change.
+*/
+
+#if defined(__GNUC__) && defined(__i386__)
+/* 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