summaryrefslogtreecommitdiff
path: root/Zend/zend_objects_API.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2018-10-13 15:30:27 +0200
committerNikita Popov <nikita.ppv@gmail.com>2018-10-16 20:53:59 +0200
commit1cfbb21790ff6dd4931223c5bdc18a0cebf3ffd4 (patch)
tree9fc9117f49dc0ad1dd6cd22d04d6068dcbf90902 /Zend/zend_objects_API.c
parentfc0aa264c1bbe7304619e73940484b39ed39af2c (diff)
downloadphp-git-1cfbb21790ff6dd4931223c5bdc18a0cebf3ffd4.tar.gz
Classify object handlers are required/optional
Diffstat (limited to 'Zend/zend_objects_API.c')
-rw-r--r--Zend/zend_objects_API.c28
1 files changed, 11 insertions, 17 deletions
diff --git a/Zend/zend_objects_API.c b/Zend/zend_objects_API.c
index 672a580caa..23c8842411 100644
--- a/Zend/zend_objects_API.c
+++ b/Zend/zend_objects_API.c
@@ -49,9 +49,8 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_call_destructors(zend_objects_sto
if (!(OBJ_FLAGS(obj) & IS_OBJ_DESTRUCTOR_CALLED)) {
GC_ADD_FLAGS(obj, IS_OBJ_DESTRUCTOR_CALLED);
- if (obj->handlers->dtor_obj
- && (obj->handlers->dtor_obj != zend_objects_destroy_object
- || obj->ce->destructor)) {
+ if (obj->handlers->dtor_obj != zend_objects_destroy_object
+ || obj->ce->destructor) {
GC_ADDREF(obj);
obj->handlers->dtor_obj(obj);
GC_DELREF(obj);
@@ -98,7 +97,7 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_free_object_storage(zend_objects_
if (IS_OBJ_VALID(obj)) {
if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
GC_ADD_FLAGS(obj, IS_OBJ_FREE_CALLED);
- if (obj->handlers->free_obj && obj->handlers->free_obj != zend_object_std_dtor) {
+ if (obj->handlers->free_obj != zend_object_std_dtor) {
GC_ADDREF(obj);
obj->handlers->free_obj(obj);
GC_DELREF(obj);
@@ -113,11 +112,9 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_free_object_storage(zend_objects_
if (IS_OBJ_VALID(obj)) {
if (!(OBJ_FLAGS(obj) & IS_OBJ_FREE_CALLED)) {
GC_ADD_FLAGS(obj, IS_OBJ_FREE_CALLED);
- if (obj->handlers->free_obj) {
- GC_ADDREF(obj);
- obj->handlers->free_obj(obj);
- GC_DELREF(obj);
- }
+ GC_ADDREF(obj);
+ obj->handlers->free_obj(obj);
+ GC_DELREF(obj);
}
}
} while (obj_ptr != end);
@@ -163,9 +160,8 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_del(zend_object *object) /* {{{ *
if (!(OBJ_FLAGS(object) & IS_OBJ_DESTRUCTOR_CALLED)) {
GC_ADD_FLAGS(object, IS_OBJ_DESTRUCTOR_CALLED);
- if (object->handlers->dtor_obj
- && (object->handlers->dtor_obj != zend_objects_destroy_object
- || object->ce->destructor)) {
+ if (object->handlers->dtor_obj != zend_objects_destroy_object
+ || object->ce->destructor) {
GC_ADDREF(object);
object->handlers->dtor_obj(object);
GC_DELREF(object);
@@ -179,11 +175,9 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_del(zend_object *object) /* {{{ *
EG(objects_store).object_buckets[handle] = SET_OBJ_INVALID(object);
if (!(OBJ_FLAGS(object) & IS_OBJ_FREE_CALLED)) {
GC_ADD_FLAGS(object, IS_OBJ_FREE_CALLED);
- if (object->handlers->free_obj) {
- GC_ADDREF(object);
- object->handlers->free_obj(object);
- GC_DELREF(object);
- }
+ GC_ADDREF(object);
+ object->handlers->free_obj(object);
+ GC_DELREF(object);
}
ptr = ((char*)object) - object->handlers->offset;
GC_REMOVE_FROM_BUFFER(object);