diff options
author | Dmitry Stogov <dmitry@zend.com> | 2021-01-19 11:55:09 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2021-01-19 11:55:09 +0300 |
commit | b3bbb8fe3be329586520fed3ea4a97f9632e84b2 (patch) | |
tree | d04225d781cf6587d22545844451f31df521de50 /Zend/zend_inheritance.c | |
parent | c195fcd67894a7589db1696fb42ed517b24eef6b (diff) | |
download | php-git-b3bbb8fe3be329586520fed3ea4a97f9632e84b2.tar.gz |
Mark classes cached by opcache by ZEND_ACC_CACHED flag and prevent useless copying and desrpoying of immutable data.
Diffstat (limited to 'Zend/zend_inheritance.c')
-rw-r--r-- | Zend/zend_inheritance.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c index de7e70f169..16e31a10d8 100644 --- a/Zend/zend_inheritance.c +++ b/Zend/zend_inheritance.c @@ -1549,11 +1549,13 @@ static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry } } - for (i = 0; i < ce->num_interfaces; i++) { - zend_string_release_ex(ce->interface_names[i].name, 0); - zend_string_release_ex(ce->interface_names[i].lc_name, 0); + if (!(ce->ce_flags & ZEND_ACC_CACHED)) { + for (i = 0; i < ce->num_interfaces; i++) { + zend_string_release_ex(ce->interface_names[i].name, 0); + zend_string_release_ex(ce->interface_names[i].lc_name, 0); + } + efree(ce->interface_names); } - efree(ce->interface_names); ce->num_interfaces = num_interfaces; ce->interfaces = interfaces; |