Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  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
  74.