@@ -158,7 +158,7 @@ static void v8js_free_storage(void *object TSRMLS_DC) /* {{{ */
158
158
it != c->weak_objects .end (); ++it) {
159
159
zval *value = it->first ;
160
160
zval_ptr_dtor (&value);
161
- c->isolate ->AdjustAmountOfExternalAllocatedMemory (-1024 );
161
+ c->isolate ->AdjustAmountOfExternalAllocatedMemory (-c-> average_object_size );
162
162
it->second .Reset ();
163
163
}
164
164
c->weak_objects .~map ();
@@ -254,6 +254,8 @@ static zend_object_value v8js_new(zend_class_entry *ce TSRMLS_DC) /* {{{ */
254
254
new (&c->v8js_v8objects ) std::list<v8js_v8object *>();
255
255
new (&c->script_objects ) std::vector<v8js_script *>();
256
256
257
+ c->average_object_size = 1024 ;
258
+
257
259
retval.handle = zend_objects_store_put (c, NULL , (zend_objects_free_object_storage_t ) v8js_free_storage, NULL TSRMLS_CC);
258
260
retval.handlers = &v8js_object_handlers;
259
261
@@ -899,6 +901,22 @@ static PHP_METHOD(V8Js, setMemoryLimit)
899
901
}
900
902
/* }}} */
901
903
904
+ /* {{{ proto void V8Js::setAverageObjectSize(average_object_size)
905
+ */
906
+ static PHP_METHOD (V8Js, setAverageObjectSize)
907
+ {
908
+ v8js_ctx *c;
909
+ long average_object_size = 0 ;
910
+
911
+ if (zend_parse_parameters (ZEND_NUM_ARGS () TSRMLS_CC, " l" , &average_object_size) == FAILURE) {
912
+ return ;
913
+ }
914
+
915
+ c = (v8js_ctx *) zend_object_store_get_object (getThis () TSRMLS_CC);
916
+ c->average_object_size = average_object_size;
917
+ }
918
+ /* }}} */
919
+
902
920
static void v8js_persistent_zval_ctor (zval **p) /* {{{ */
903
921
{
904
922
zval *orig_ptr = *p;
@@ -1178,6 +1196,10 @@ ZEND_BEGIN_ARG_INFO_EX(arginfo_v8js_setmoduleloader, 0, 0, 1)
1178
1196
ZEND_ARG_INFO(0 , callable)
1179
1197
ZEND_END_ARG_INFO()
1180
1198
1199
+ ZEND_BEGIN_ARG_INFO_EX(arginfo_v8js_setaverageobjectsize, 0 , 0 , 1 )
1200
+ ZEND_ARG_INFO(0 , average_object_size)
1201
+ ZEND_END_ARG_INFO()
1202
+
1181
1203
ZEND_BEGIN_ARG_INFO_EX(arginfo_v8js_registerextension, 0 , 0 , 2 )
1182
1204
ZEND_ARG_INFO(0 , extension_name)
1183
1205
ZEND_ARG_INFO(0 , script)
@@ -1217,6 +1239,7 @@ const zend_function_entry v8js_methods[] = { /* {{{ */
1217
1239
PHP_ME (V8Js, setModuleLoader, arginfo_v8js_setmoduleloader, ZEND_ACC_PUBLIC)
1218
1240
PHP_ME (V8Js, setTimeLimit, arginfo_v8js_settimelimit, ZEND_ACC_PUBLIC)
1219
1241
PHP_ME (V8Js, setMemoryLimit, arginfo_v8js_setmemorylimit, ZEND_ACC_PUBLIC)
1242
+ PHP_ME (V8Js, setAverageObjectSize, arginfo_v8js_setaverageobjectsize, ZEND_ACC_PUBLIC)
1220
1243
PHP_ME (V8Js, registerExtension, arginfo_v8js_registerextension, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
1221
1244
PHP_ME (V8Js, getExtensions, arginfo_v8js_getextensions, ZEND_ACC_PUBLIC|ZEND_ACC_STATIC)
1222
1245
0 commit comments