Re: Optimizing emalloc and friends
| From: | (Marcus Börger) | Date: | Sun, 25 May 2003 11:24:24 +0000 |
| Subject: | Re: Optimizing emalloc and friends | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-1981@lists.php.net to get a copy of this message | ||
At 04:46 25.05.2003, Moriyoshi Koizumi wrote:
>The patch is where..? Try suffixing the file name of the attachment with
>".txt"; this tip is known to work with Outlook Express at least.
2nd try.
marcus
Index: Zend/zend_alloc.c =================================================================== RCS file: /repository/ZendEngine2/zend_alloc.c,v retrieving revision 1.116 diff -u -r1.116 zend_alloc.c --- Zend/zend_alloc.c 24 Apr 2003 03:35:06 -0000 1.116 +++ Zend/zend_alloc.c 25 May 2003 01:16:55 -0000 @@ -131,11 +131,10 @@ #define CACHE_INDEX cache_index -ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +ZEND_API void *_emalloc_t(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC TSRMLS_DC) { zend_mem_header *p; DECLARE_CACHE_VARS(); - TSRMLS_FETCH(); CALCULATE_REAL_SIZE_AND_CACHE_INDEX(size); @@ -298,15 +297,14 @@ } -ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +ZEND_API void *_erealloc_t(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC TSRMLS_DC) { zend_mem_header *p; zend_mem_header *orig; DECLARE_CACHE_VARS(); - TSRMLS_FETCH(); if (!ptr) { - return _emalloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + return _emalloc_t(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC); } p = orig = (zend_mem_header *) ((char *)ptr-sizeof(zend_mem_header)-MEM_HEADER_PADDING); Index: Zend/zend_alloc.h =================================================================== RCS file: /repository/ZendEngine2/zend_alloc.h,v retrieving revision 1.42 diff -u -r1.42 zend_alloc.h --- Zend/zend_alloc.h 24 Apr 2003 03:35:06 -0000 1.42 +++ Zend/zend_alloc.h 25 May 2003 01:16:55 -0000 @@ -77,20 +77,42 @@ ZEND_API char *zend_strndup(const char *s, unsigned int length); -ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); +ZEND_API void *_emalloc_t(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC TSRMLS_DC); ZEND_API void *_safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void *_ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); -ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); +ZEND_API void *_erealloc_t(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC TSRMLS_DC); ZEND_API char *_estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API char *_estrndup(const char *s, unsigned int length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); +#ifdef ZTS +#define TSRMLS_CREATE_C ts_resource_ex(0, NULL) +#define TSRMLS_CREATE_CC , TSRMLS_CREATE_C +#else +#define TSRMLS_CREATE_C +#define TSRMLS_CREATE_CC +#endif + +static inline void * _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + TSRMLS_FETCH(); + return _emalloc_t(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC); +} + +static inline void * _erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + TSRMLS_FETCH(); + return _erealloc_t(ptr, size, allow_failure ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC); +} + /* Standard wrapper macros */ -#define emalloc(size) _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) +#define emalloc_t(size) _emalloc_t((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC TSRMLS_CC) +#define emalloc(size) _emalloc_t((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC TSRMLS_CREATE_CC) #define safe_emalloc(nmemb, size, offset) _safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define efree(ptr) _efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define ecalloc(nmemb, size) _ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) -#define erealloc(ptr, size) _erealloc((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) +#define erealloc_t(ptr, size) _erealloc_t((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC TSRMLS_CC) +#define erealloc(ptr, size) _erealloc_t((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC TSRMLS_CREATE_CC) #define erealloc_recoverable(ptr, size) _erealloc((ptr), (size), 1 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define estrdup(s) _estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define estrndup(s, length) _estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) Index: main/streams/php_streams_int.h =================================================================== RCS file: /repository/php4/main/streams/php_streams_int.h,v retrieving revision 1.3 diff -u -r1.3 php_streams_int.h --- main/streams/php_streams_int.h 27 Feb 2003 17:43:38 -0000 1.3 +++ main/streams/php_streams_int.h 25 May 2003 01:16:59 -0000 @@ -21,13 +21,13 @@ #if ZEND_DEBUG #define emalloc_rel_orig(size) \ ( __php_stream_call_depth == 0 \ - ? _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \ - : _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) ) + ? _emalloc_t((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC TSRMLS_CC) \ + : _emalloc_t((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC) ) #define erealloc_rel_orig(ptr, size) \ ( __php_stream_call_depth == 0 \ - ? _erealloc((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \ - : _erealloc((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) ) + ? _erealloc_t((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC TSRMLS_CC) \ + : _erealloc_t((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC) ) #define pemalloc_rel_orig(size, persistent) ((persistent) ? malloc((size)) : emalloc_rel_orig((size)))
Index: Zend/zend_alloc.c =================================================================== RCS file: /repository/ZendEngine2/zend_alloc.c,v retrieving revision 1.116 diff -u -r1.116 zend_alloc.c --- Zend/zend_alloc.c 24 Apr 2003 03:35:06 -0000 1.116 +++ Zend/zend_alloc.c 25 May 2003 01:16:55 -0000 @@ -131,11 +131,10 @@ #define CACHE_INDEX cache_index -ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +ZEND_API void *_emalloc_t(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC TSRMLS_DC) { zend_mem_header *p; DECLARE_CACHE_VARS(); - TSRMLS_FETCH(); CALCULATE_REAL_SIZE_AND_CACHE_INDEX(size); @@ -298,15 +297,14 @@ } -ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +ZEND_API void *_erealloc_t(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC TSRMLS_DC) { zend_mem_header *p; zend_mem_header *orig; DECLARE_CACHE_VARS(); - TSRMLS_FETCH(); if (!ptr) { - return _emalloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); + return _emalloc_t(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC); } p = orig = (zend_mem_header *) ((char *)ptr-sizeof(zend_mem_header)-MEM_HEADER_PADDING); Index: Zend/zend_alloc.h =================================================================== RCS file: /repository/ZendEngine2/zend_alloc.h,v retrieving revision 1.42 diff -u -r1.42 zend_alloc.h --- Zend/zend_alloc.h 24 Apr 2003 03:35:06 -0000 1.42 +++ Zend/zend_alloc.h 25 May 2003 01:16:55 -0000 @@ -77,20 +77,42 @@ ZEND_API char *zend_strndup(const char *s, unsigned int length); -ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); +ZEND_API void *_emalloc_t(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC TSRMLS_DC); ZEND_API void *_safe_emalloc(size_t nmemb, size_t size, size_t offset ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API void *_ecalloc(size_t nmemb, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); -ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); +ZEND_API void *_erealloc_t(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC TSRMLS_DC); ZEND_API char *_estrdup(const char *s ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); ZEND_API char *_estrndup(const char *s, unsigned int length ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC); +#ifdef ZTS +#define TSRMLS_CREATE_C ts_resource_ex(0, NULL) +#define TSRMLS_CREATE_CC , TSRMLS_CREATE_C +#else +#define TSRMLS_CREATE_C +#define TSRMLS_CREATE_CC +#endif + +static inline void * _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + TSRMLS_FETCH(); + return _emalloc_t(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC); +} + +static inline void * _erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC) +{ + TSRMLS_FETCH(); + return _erealloc_t(ptr, size, allow_failure ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC); +} + /* Standard wrapper macros */ -#define emalloc(size) _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) +#define emalloc_t(size) _emalloc_t((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC TSRMLS_CC) +#define emalloc(size) _emalloc_t((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC TSRMLS_CREATE_CC) #define safe_emalloc(nmemb, size, offset) _safe_emalloc((nmemb), (size), (offset) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define efree(ptr) _efree((ptr) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define ecalloc(nmemb, size) _ecalloc((nmemb), (size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) -#define erealloc(ptr, size) _erealloc((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) +#define erealloc_t(ptr, size) _erealloc_t((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC TSRMLS_CC) +#define erealloc(ptr, size) _erealloc_t((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC TSRMLS_CREATE_CC) #define erealloc_recoverable(ptr, size) _erealloc((ptr), (size), 1 ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define estrdup(s) _estrdup((s) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) #define estrndup(s, length) _estrndup((s), (length) ZEND_FILE_LINE_CC ZEND_FILE_LINE_EMPTY_CC) Index: main/streams/php_streams_int.h =================================================================== RCS file: /repository/php4/main/streams/php_streams_int.h,v retrieving revision 1.3 diff -u -r1.3 php_streams_int.h --- main/streams/php_streams_int.h 27 Feb 2003 17:43:38 -0000 1.3 +++ main/streams/php_streams_int.h 25 May 2003 01:16:59 -0000 @@ -21,13 +21,13 @@ #if ZEND_DEBUG #define emalloc_rel_orig(size) \ ( __php_stream_call_depth == 0 \ - ? _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \ - : _emalloc((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) ) + ? _emalloc_t((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC TSRMLS_CC) \ + : _emalloc_t((size) ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC) ) #define erealloc_rel_orig(ptr, size) \ ( __php_stream_call_depth == 0 \ - ? _erealloc((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC) \ - : _erealloc((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC) ) + ? _erealloc_t((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_RELAY_CC TSRMLS_CC) \ + : _erealloc_t((ptr), (size), 0 ZEND_FILE_LINE_CC ZEND_FILE_LINE_ORIG_RELAY_CC TSRMLS_CC) ) #define pemalloc_rel_orig(size, persistent) ((persistent) ? malloc((size)) : emalloc_rel_orig((size)))