]> granicus.if.org Git - php/commitdiff
added --enable-memory-usage-info
authorThies C. Arntzen <thies@php.net>
Fri, 11 May 2001 18:16:41 +0000 (18:16 +0000)
committerThies C. Arntzen <thies@php.net>
Fri, 11 May 2001 18:16:41 +0000 (18:16 +0000)
Zend/Zend.m4
Zend/zend_alloc.c
Zend/zend_globals.h

index 4e7b7f2d871b29b1157fede2078e19ffaa4367a2..360c50d009eb3b78ee20ae0ee5438a01be61b6fd 100644 (file)
@@ -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]*//`
index ade2d03c31f48a41d11e55d8cfc105b024e3bc11..7a70333ea9a09d6c1af69884e5196da498875468 100644 (file)
@@ -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 {
index 867fee8316c39b875acb20a9f62fb79f1491c58a..b853800c56e19b7aa8055499c2a715a00eb6e0d4 100644 (file)
@@ -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 */