From: Dmitry Stogov Date: Wed, 9 Sep 2015 10:42:35 +0000 (+0300) Subject: Don't inline "slow" and rarely used functions. X-Git-Tag: php-7.1.0alpha1~1202 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ac83eaef1097552065395872c69b77dcab2919b1;p=php Don't inline "slow" and rarely used functions. --- diff --git a/Zend/zend_alloc.c b/Zend/zend_alloc.c index 05a53ba97b..4d5f2dcdc1 100644 --- a/Zend/zend_alloc.c +++ b/Zend/zend_alloc.c @@ -2792,6 +2792,37 @@ ZEND_API zend_mm_heap *zend_mm_startup_ex(const zend_mm_handlers *handlers, void #endif } +static ZEND_COLD ZEND_NORETURN void zend_out_of_memory(void) +{ + fprintf(stderr, "Out of memory\n"); + exit(1); +} + +ZEND_API void * __zend_malloc(size_t len) +{ + void *tmp = malloc(len); + if (EXPECTED(tmp)) { + return tmp; + } + zend_out_of_memory(); +} + +ZEND_API void * __zend_calloc(size_t nmemb, size_t len) +{ + void *tmp = _safe_malloc(nmemb, len, 0); + memset(tmp, 0, nmemb * len); + return tmp; +} + +ZEND_API void * __zend_realloc(void *p, size_t len) +{ + p = realloc(p, len); + if (EXPECTED(p)) { + return p; + } + zend_out_of_memory(); +} + /* * Local variables: * tab-width: 4 diff --git a/Zend/zend_alloc.h b/Zend/zend_alloc.h index cd4bb62e1d..c250de0239 100644 --- a/Zend/zend_alloc.h +++ b/Zend/zend_alloc.h @@ -187,33 +187,9 @@ ZEND_API void ZEND_FASTCALL _efree_huge(void *, size_t size); #define estrndup_rel(s, length) _estrndup((s), (length) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) #define zend_mem_block_size_rel(ptr) _zend_mem_block_size((ptr) ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_CC) -zend_always_inline static void * __zend_malloc(size_t len) -{ - void *tmp = malloc(len); - if (tmp) { - return tmp; - } - fprintf(stderr, "Out of memory\n"); - exit(1); -} - -zend_always_inline static void * __zend_calloc(size_t nmemb, size_t len) -{ - void *tmp = _safe_malloc(nmemb, len, 0); - memset(tmp, 0, nmemb * len); - return tmp; -} - -zend_always_inline static void * __zend_realloc(void *p, size_t len) -{ - p = realloc(p, len); - if (p) { - return p; - } - fprintf(stderr, "Out of memory\n"); - exit(1); -} - +ZEND_API void * __zend_malloc(size_t len) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE(1); +ZEND_API void * __zend_calloc(size_t nmemb, size_t len) ZEND_ATTRIBUTE_MALLOC ZEND_ATTRIBUTE_ALLOC_SIZE2(1,2); +ZEND_API void * __zend_realloc(void *p, size_t len) ZEND_ATTRIBUTE_ALLOC_SIZE(2); /* Selective persistent/non persistent allocation macros */ #define pemalloc(size, persistent) ((persistent)?__zend_malloc(size):emalloc(size))