mirror of
				https://github.com/python/cpython.git
				synced 2025-10-30 21:21:22 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			73 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
	
		
			2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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
 | 
