mirror of
https://github.com/php/php-src.git
synced 2026-04-27 10:16:41 +02:00
added --enable-memory-usage-info
This commit is contained in:
@@ -123,6 +123,13 @@ AC_ARG_ENABLE(memory-limit,
|
||||
ZEND_MEMORY_LIMIT=no
|
||||
])
|
||||
|
||||
AC_ARG_ENABLE(memory-usage-info,
|
||||
[ --enable-memory-usage-info Compile with support for memory usage info. ], [
|
||||
ZEND_MEMORY_USAGE_INFO=$enableval
|
||||
],[
|
||||
ZEND_MEMORY_USAGE_INFO=no
|
||||
])
|
||||
|
||||
AC_MSG_CHECKING(whether to enable experimental ZTS)
|
||||
AC_MSG_RESULT($ZEND_EXPERIMENTAL_ZTS)
|
||||
|
||||
@@ -132,6 +139,9 @@ AC_MSG_RESULT($ZEND_INLINE_OPTIMIZATION)
|
||||
AC_MSG_CHECKING(whether to enable a memory limit)
|
||||
AC_MSG_RESULT($ZEND_MEMORY_LIMIT)
|
||||
|
||||
AC_MSG_CHECKING(whether to enable a memory usage)
|
||||
AC_MSG_RESULT($ZEND_MEMORY_USAGE_INFO)
|
||||
|
||||
AC_MSG_CHECKING(whether to enable Zend debugging)
|
||||
AC_MSG_RESULT($ZEND_DEBUG)
|
||||
|
||||
@@ -167,6 +177,13 @@ else
|
||||
AC_DEFINE(MEMORY_LIMIT, 0, [Memory limit])
|
||||
fi
|
||||
|
||||
if test "$ZEND_MEMORY_USAGE_INFO" = "yes"; then
|
||||
AC_DEFINE(MEMORY_USAGE_INFO, 1, [Memory usage])
|
||||
else
|
||||
AC_DEFINE(MEMORY_USAGE_INFO, 0, [Memory usage])
|
||||
fi
|
||||
|
||||
|
||||
changequote({,})
|
||||
if test -n "$GCC" && test "$ZEND_INLINE_OPTIMIZATION" != "yes"; then
|
||||
INLINE_CFLAGS=`echo $ac_n "$CFLAGS $ac_c" | sed s/-O[0-9s]*//`
|
||||
|
||||
@@ -185,6 +185,12 @@ ZEND_API void *_emalloc(size_t size ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
|
||||
#if MEMORY_LIMIT
|
||||
CHECK_MEMORY_LIMIT(size, SIZE);
|
||||
#endif
|
||||
#if MEMORY_USAGE_INFO
|
||||
AG(cur_allocated_memory) += SIZE;
|
||||
if (AG(cur_allocated_memory) > AG(max_allocated_memory))
|
||||
AG(max_allocated_memory) = AG(cur_allocated_memory);
|
||||
#endif
|
||||
|
||||
HANDLE_UNBLOCK_INTERRUPTIONS();
|
||||
return (void *)((char *)p + sizeof(zend_mem_header) + MEM_HEADER_PADDING);
|
||||
}
|
||||
@@ -228,6 +234,9 @@ ZEND_API void _efree(void *ptr ZEND_FILE_LINE_DC ZEND_FILE_LINE_ORIG_DC)
|
||||
#if MEMORY_LIMIT
|
||||
AG(allocated_memory) -= SIZE;
|
||||
#endif
|
||||
#if MEMORY_USAGE_INFO
|
||||
AG(cur_allocated_memory) -= SIZE;
|
||||
#endif
|
||||
|
||||
free(p);
|
||||
HANDLE_UNBLOCK_INTERRUPTIONS();
|
||||
@@ -305,6 +314,12 @@ ZEND_API void *_erealloc(void *ptr, size_t size, int allow_failure ZEND_FILE_LIN
|
||||
#if MEMORY_LIMIT
|
||||
CHECK_MEMORY_LIMIT(size - p->size, SIZE - REAL_SIZE(p->size));
|
||||
#endif
|
||||
#if MEMORY_USAGE_INFO
|
||||
AG(cur_allocated_memory) += SIZE - REAL_SIZE(p->size);
|
||||
if (AG(cur_allocated_memory) > AG(max_allocated_memory))
|
||||
AG(max_allocated_memory) = AG(cur_allocated_memory);
|
||||
#endif
|
||||
|
||||
p->size = size;
|
||||
|
||||
HANDLE_UNBLOCK_INTERRUPTIONS();
|
||||
@@ -390,6 +405,10 @@ ZEND_API void start_memory_manager(ALS_D)
|
||||
AG(allocated_memory) = 0;
|
||||
AG(memory_exhausted) = 0;
|
||||
#endif
|
||||
#if MEMORY_USAGE_INFO
|
||||
AG(cur_allocated_memory) = 0;
|
||||
AG(max_allocated_memory) = 0;
|
||||
#endif
|
||||
|
||||
memset(AG(fast_cache_list_head), 0, sizeof(AG(fast_cache_list_head)));
|
||||
memset(AG(cache_count), 0, sizeof(AG(cache_count)));
|
||||
@@ -488,6 +507,10 @@ ZEND_API void shutdown_memory_manager(int silent, int clean_cache)
|
||||
#if MEMORY_LIMIT
|
||||
AG(memory_exhausted)=0;
|
||||
#endif
|
||||
#if MEMORY_USAGE_INFO
|
||||
AG(cur_allocated_memory) = 0;
|
||||
AG(max_allocated_memory) = 0;
|
||||
#endif
|
||||
|
||||
#if (ZEND_DEBUG)
|
||||
do {
|
||||
|
||||
@@ -217,6 +217,10 @@ struct _zend_alloc_globals {
|
||||
unsigned int allocated_memory;
|
||||
unsigned char memory_exhausted;
|
||||
#endif
|
||||
#if MEMORY_USAGE_INFO
|
||||
unsigned int cur_allocated_memory;
|
||||
unsigned int max_allocated_memory;
|
||||
#endif
|
||||
};
|
||||
|
||||
#endif /* ZEND_GLOBALS_H */
|
||||
|
||||
Reference in New Issue
Block a user