diff options
Diffstat (limited to 'ext/opcache/zend_file_cache.c')
-rw-r--r-- | ext/opcache/zend_file_cache.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/ext/opcache/zend_file_cache.c b/ext/opcache/zend_file_cache.c index d89c462df5..1021992b3a 100644 --- a/ext/opcache/zend_file_cache.c +++ b/ext/opcache/zend_file_cache.c @@ -606,6 +606,20 @@ static void zend_file_cache_serialize_op_array(zend_op_array *op_arra } } + if (op_array->num_dynamic_func_defs) { + zend_op_array **defs; + SERIALIZE_PTR(op_array->dynamic_func_defs); + defs = op_array->dynamic_func_defs; + UNSERIALIZE_PTR(defs); + for (uint32_t i = 0; i < op_array->num_dynamic_func_defs; i++) { + zend_op_array *def; + SERIALIZE_PTR(defs[i]); + def = defs[i]; + UNSERIALIZE_PTR(def); + zend_file_cache_serialize_op_array(def, script, info, buf); + } + } + SERIALIZE_STR(op_array->function_name); SERIALIZE_STR(op_array->filename); SERIALIZE_PTR(op_array->live_range); @@ -1394,6 +1408,14 @@ static void zend_file_cache_unserialize_op_array(zend_op_array *op_arr } } + if (op_array->num_dynamic_func_defs) { + UNSERIALIZE_PTR(op_array->dynamic_func_defs); + for (uint32_t i = 0; i < op_array->num_dynamic_func_defs; i++) { + UNSERIALIZE_PTR(op_array->dynamic_func_defs[i]); + zend_file_cache_unserialize_op_array(op_array->dynamic_func_defs[i], script, buf); + } + } + UNSERIALIZE_STR(op_array->function_name); UNSERIALIZE_STR(op_array->filename); UNSERIALIZE_PTR(op_array->live_range); |