]> granicus.if.org Git - php/commitdiff
Avoid cold code duplication
authorDmitry Stogov <dmitry@zend.com>
Tue, 28 May 2019 22:43:27 +0000 (01:43 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 28 May 2019 22:43:27 +0000 (01:43 +0300)
Zend/zend_alloc.c

index c57cfbedbd90488c64217e5c0a8016a87ccc1261..79b6640cbf6ba768875b6dbd73c5c1281b66c3bc 100644 (file)
@@ -2377,22 +2377,42 @@ ZEND_API int is_zend_ptr(const void *ptr)
 #undef _emalloc
 
 #if ZEND_MM_CUSTOM
+
+static ZEND_COLD void* ZEND_FASTCALL _malloc_custom(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
+{
+       if (ZEND_DEBUG && AG(mm_heap)->use_custom_heap == ZEND_MM_CUSTOM_HEAP_DEBUG) {
+               return AG(mm_heap)->custom_heap.debug._malloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
+       } else {
+               return AG(mm_heap)->custom_heap.std._malloc(size);
+       }
+}
+
+static ZEND_COLD void ZEND_FASTCALL _efree_custom(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
+{
+       if (ZEND_DEBUG && AG(mm_heap)->use_custom_heap == ZEND_MM_CUSTOM_HEAP_DEBUG) {
+               AG(mm_heap)->custom_heap.debug._free(ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
+       } else {
+               AG(mm_heap)->custom_heap.std._free(ptr);
+    }
+}
+
+static ZEND_COLD void* ZEND_FASTCALL _realloc_custom(void *ptr, size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
+{
+       if (ZEND_DEBUG && AG(mm_heap)->use_custom_heap == ZEND_MM_CUSTOM_HEAP_DEBUG) {
+               return AG(mm_heap)->custom_heap.debug._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
+       } else {
+               return AG(mm_heap)->custom_heap.std._realloc(ptr, size);
+       }
+}
+
 # define ZEND_MM_CUSTOM_ALLOCATOR(size) do { \
                if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) { \
-                       if (ZEND_DEBUG && AG(mm_heap)->use_custom_heap == ZEND_MM_CUSTOM_HEAP_DEBUG) { \
-                               return AG(mm_heap)->custom_heap.debug._malloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); \
-                       } else { \
-                               return AG(mm_heap)->custom_heap.std._malloc(size); \
-                       } \
+                       return _malloc_custom(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); \
                } \
        } while (0)
 # define ZEND_MM_CUSTOM_DEALLOCATOR(ptr) do { \
                if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) { \
-                       if (ZEND_DEBUG && AG(mm_heap)->use_custom_heap == ZEND_MM_CUSTOM_HEAP_DEBUG) { \
-                               AG(mm_heap)->custom_heap.debug._free(ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); \
-                       } else { \
-                               AG(mm_heap)->custom_heap.std._free(ptr); \
-                       } \
+                       _efree_custom(ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC); \
                        return; \
                } \
        } while (0)
@@ -2477,11 +2497,7 @@ ZEND_API void* ZEND_FASTCALL _emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LI
 {
 #if ZEND_MM_CUSTOM
        if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
-               if (ZEND_DEBUG && AG(mm_heap)->use_custom_heap == ZEND_MM_CUSTOM_HEAP_DEBUG) {
-                       return AG(mm_heap)->custom_heap.debug._malloc(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
-               } else {
-                       return AG(mm_heap)->custom_heap.std._malloc(size);
-               }
+               return _malloc_custom(size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
        }
 #endif
        return zend_mm_alloc_heap(AG(mm_heap), size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
@@ -2491,11 +2507,7 @@ ZEND_API void ZEND_FASTCALL _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_OR
 {
 #if ZEND_MM_CUSTOM
        if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
-               if (ZEND_DEBUG && AG(mm_heap)->use_custom_heap == ZEND_MM_CUSTOM_HEAP_DEBUG) {
-                       AG(mm_heap)->custom_heap.debug._free(ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
-               } else {
-                       AG(mm_heap)->custom_heap.std._free(ptr);
-           }
+               _efree_custom(ptr ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
                return;
        }
 #endif
@@ -2506,11 +2518,7 @@ ZEND_API void* ZEND_FASTCALL _erealloc(void *ptr, size_t size ZEND_FILE_LINE_DC
 {
 #if ZEND_MM_CUSTOM
        if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
-               if (ZEND_DEBUG && AG(mm_heap)->use_custom_heap == ZEND_MM_CUSTOM_HEAP_DEBUG) {
-                       return AG(mm_heap)->custom_heap.debug._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
-               } else {
-                       return AG(mm_heap)->custom_heap.std._realloc(ptr, size);
-               }
+               return _realloc_custom(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
        }
 #endif
        return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 0, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
@@ -2520,11 +2528,7 @@ ZEND_API void* ZEND_FASTCALL _erealloc2(void *ptr, size_t size, size_t copy_size
 {
 #if ZEND_MM_CUSTOM
        if (UNEXPECTED(AG(mm_heap)->use_custom_heap)) {
-               if (ZEND_DEBUG && AG(mm_heap)->use_custom_heap == ZEND_MM_CUSTOM_HEAP_DEBUG) {
-                       return AG(mm_heap)->custom_heap.debug._realloc(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
-               } else {
-                       return AG(mm_heap)->custom_heap.std._realloc(ptr, size);
-               }
+               return _realloc_custom(ptr, size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);
        }
 #endif
        return zend_mm_realloc_heap(AG(mm_heap), ptr, size, 1, copy_size ZEND_FILE_LINE_RELAY_CC ZEND_FILE_LINE_ORIG_RELAY_CC);