core/expat-2.0.1/lib/internal.h
changeset 300 b6d834208d33
parent 296 ea3dbc023c80
equal deleted inserted replaced
299:f06c5eba524d 300:b6d834208d33
       
     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