https://www.mediawiki.org/wiki/Special:Code/MediaWiki/115086

Revision: 115086
Author:   tstarling
Date:     2012-04-30 06:27:46 +0000 (Mon, 30 Apr 2012)
Log Message:
-----------
Provide LuaSandbox::getPeakMemoryUsage(), to give a more useful measure of how 
close a script came to hitting the memory limit.

Modified Paths:
--------------
    trunk/php/luasandbox/alloc.c
    trunk/php/luasandbox/luasandbox.c
    trunk/php/luasandbox/luasandbox_types.h
    trunk/php/luasandbox/php_luasandbox.h

Modified: trunk/php/luasandbox/alloc.c
===================================================================
--- trunk/php/luasandbox/alloc.c        2012-04-30 03:39:51 UTC (rev 115085)
+++ trunk/php/luasandbox/alloc.c        2012-04-30 06:27:46 UTC (rev 115086)
@@ -72,6 +72,9 @@
        }
 
        alloc->memory_usage += nsize - osize;
+       if (alloc->memory_usage > alloc->peak_memory_usage) {
+               alloc->peak_memory_usage = alloc->memory_usage;
+       }
        return 1;
 }
 /* }}} */

Modified: trunk/php/luasandbox/luasandbox.c
===================================================================
--- trunk/php/luasandbox/luasandbox.c   2012-04-30 03:39:51 UTC (rev 115085)
+++ trunk/php/luasandbox/luasandbox.c   2012-04-30 06:27:46 UTC (rev 115086)
@@ -82,6 +82,9 @@
 ZEND_BEGIN_ARG_INFO(arginfo_luasandbox_getMemoryUsage, 0)
 ZEND_END_ARG_INFO()
 
+ZEND_BEGIN_ARG_INFO(arginfo_luasandbox_getPeakMemoryUsage, 0)
+ZEND_END_ARG_INFO()
+
 ZEND_BEGIN_ARG_INFO(arginfo_luasandbox_setCPULimit, 0)
        ZEND_ARG_INFO(0, normal_limit)
        ZEND_ARG_INFO(0, emergency_limit)
@@ -122,6 +125,7 @@
        PHP_ME(LuaSandbox, loadBinary, arginfo_luasandbox_loadBinary, 0)
        PHP_ME(LuaSandbox, setMemoryLimit, arginfo_luasandbox_setMemoryLimit, 0)
        PHP_ME(LuaSandbox, getMemoryUsage, arginfo_luasandbox_getMemoryUsage, 0)
+       PHP_ME(LuaSandbox, getPeakMemoryUsage, 
arginfo_luasandbox_getPeakMemoryUsage, 0)
        PHP_ME(LuaSandbox, setCPULimit, arginfo_luasandbox_setCPULimit, 0)
        PHP_ME(LuaSandbox, getCPUUsage, arginfo_luasandbox_getCPUUsage, 0)
        PHP_ME(LuaSandbox, callFunction, arginfo_luasandbox_callFunction, 0)
@@ -812,6 +816,20 @@
 }
 /* }}} */
 
+/** {{{ LuaSandbox::getPeakMemoryUsage */
+PHP_METHOD(LuaSandbox, getPeakMemoryUsage)
+{
+       php_luasandbox_obj * sandbox = (php_luasandbox_obj*)
+               zend_object_store_get_object(getThis() TSRMLS_CC);
+
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "") == FAILURE) {
+               RETURN_FALSE;
+       }
+
+       RETURN_LONG(sandbox->alloc.peak_memory_usage);
+}
+/* }}} */
+
 /** {{{ proto array LuaSandbox::callFunction(string name, ...)
  *
  * Call a function in the global variable with the given name. The name may 

Modified: trunk/php/luasandbox/luasandbox_types.h
===================================================================
--- trunk/php/luasandbox/luasandbox_types.h     2012-04-30 03:39:51 UTC (rev 
115085)
+++ trunk/php/luasandbox/luasandbox_types.h     2012-04-30 06:27:46 UTC (rev 
115086)
@@ -47,6 +47,7 @@
        void * old_alloc_ud;
        size_t memory_limit;
        size_t memory_usage;
+       size_t peak_memory_usage;
 } php_luasandbox_alloc;
 
 struct _php_luasandbox_obj {

Modified: trunk/php/luasandbox/php_luasandbox.h
===================================================================
--- trunk/php/luasandbox/php_luasandbox.h       2012-04-30 03:39:51 UTC (rev 
115085)
+++ trunk/php/luasandbox/php_luasandbox.h       2012-04-30 06:27:46 UTC (rev 
115086)
@@ -41,6 +41,7 @@
 PHP_METHOD(LuaSandbox, loadBinary);
 PHP_METHOD(LuaSandbox, setMemoryLimit);
 PHP_METHOD(LuaSandbox, getMemoryUsage);
+PHP_METHOD(LuaSandbox, getPeakMemoryUsage);
 PHP_METHOD(LuaSandbox, setCPULimit);
 PHP_METHOD(LuaSandbox, getCPUUsage);
 PHP_METHOD(LuaSandbox, callFunction);


_______________________________________________
MediaWiki-CVS mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-cvs

Reply via email to