summaryrefslogtreecommitdiff
path: root/Zend/zend_inheritance.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2020-06-26 10:54:40 +0200
committerNikita Popov <nikita.ppv@gmail.com>2020-06-26 10:54:40 +0200
commit1314ccbf8c3731f000e2c32f34dad21b053333f3 (patch)
tree06eefc0988942a2ee8201fcedc8b54dd97497bf1 /Zend/zend_inheritance.c
parentb6deace022a792ffe7139cfb82654095cfd27364 (diff)
downloadphp-git-1314ccbf8c3731f000e2c32f34dad21b053333f3.tar.gz
Cache __unserialize() instead of unserialize()
We should use these cache slots for the new object serialization mechanism rather than the old one.
Diffstat (limited to 'Zend/zend_inheritance.c')
-rw-r--r--Zend/zend_inheritance.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/Zend/zend_inheritance.c b/Zend/zend_inheritance.c
index 7cee42085b..8a3c9ba1aa 100644
--- a/Zend/zend_inheritance.c
+++ b/Zend/zend_inheritance.c
@@ -167,15 +167,15 @@ static void do_inherit_parent_constructor(zend_class_entry *ce) /* {{{ */
if (EXPECTED(!ce->clone)) {
ce->clone = parent->clone;
}
- if (EXPECTED(!ce->serialize_func)) {
- ce->serialize_func = parent->serialize_func;
+ if (EXPECTED(!ce->__serialize)) {
+ ce->__serialize = parent->__serialize;
+ }
+ if (EXPECTED(!ce->__unserialize)) {
+ ce->__unserialize = parent->__unserialize;
}
if (EXPECTED(!ce->serialize)) {
ce->serialize = parent->serialize;
}
- if (EXPECTED(!ce->unserialize_func)) {
- ce->unserialize_func = parent->unserialize_func;
- }
if (EXPECTED(!ce->unserialize)) {
ce->unserialize = parent->unserialize;
}
@@ -1557,11 +1557,7 @@ static void zend_do_implement_interfaces(zend_class_entry *ce, zend_class_entry
static void zend_add_magic_methods(zend_class_entry* ce, zend_string* mname, zend_function* fe) /* {{{ */
{
- if (zend_string_equals_literal(mname, "serialize")) {
- ce->serialize_func = fe;
- } else if (zend_string_equals_literal(mname, "unserialize")) {
- ce->unserialize_func = fe;
- } else if (ZSTR_VAL(mname)[0] != '_' || ZSTR_VAL(mname)[1] != '_') {
+ if (ZSTR_VAL(mname)[0] != '_' || ZSTR_VAL(mname)[1] != '_') {
/* pass */
} else if (zend_string_equals_literal(mname, ZEND_CLONE_FUNC_NAME)) {
ce->clone = fe;
@@ -1589,6 +1585,10 @@ static void zend_add_magic_methods(zend_class_entry* ce, zend_string* mname, zen
ce->__tostring = fe;
} else if (zend_string_equals_literal(mname, ZEND_DEBUGINFO_FUNC_NAME)) {
ce->__debugInfo = fe;
+ } else if (zend_string_equals_literal(mname, "__serialize")) {
+ ce->__serialize = fe;
+ } else if (zend_string_equals_literal(mname, "__unserialize")) {
+ ce->__unserialize = fe;
}
}
/* }}} */