Skip to content

Commit 71d6899

Browse files
committed
micro-optimization
1 parent 5ae1524 commit 71d6899

File tree

1 file changed

+4
-5
lines changed

1 file changed

+4
-5
lines changed

Zend/zend_objects_API.c

+4-5
Original file line numberDiff line numberDiff line change
@@ -162,16 +162,14 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_del(zend_object *object) /* {{{ *
162162
otherwise, when the destructor ends the storage might be freed
163163
when the refcount reaches 0 a second time
164164
*/
165-
ZEND_ASSERT(EG(objects_store).object_buckets != NULL);
166-
ZEND_ASSERT(IS_OBJ_VALID(EG(objects_store).object_buckets[object->handle]));
167165
ZEND_ASSERT(GC_REFCOUNT(object) == 0);
168166

169167
if (!(OBJ_FLAGS(object) & IS_OBJ_DESTRUCTOR_CALLED)) {
170168
GC_ADD_FLAGS(object, IS_OBJ_DESTRUCTOR_CALLED);
171169

172170
if (object->handlers->dtor_obj != zend_objects_destroy_object
173171
|| object->ce->destructor) {
174-
GC_ADDREF(object);
172+
GC_SET_REFCOUNT(object, 1);
175173
object->handlers->dtor_obj(object);
176174
GC_DELREF(object);
177175
}
@@ -181,12 +179,13 @@ ZEND_API void ZEND_FASTCALL zend_objects_store_del(zend_object *object) /* {{{ *
181179
uint32_t handle = object->handle;
182180
void *ptr;
183181

182+
ZEND_ASSERT(EG(objects_store).object_buckets != NULL);
183+
ZEND_ASSERT(IS_OBJ_VALID(EG(objects_store).object_buckets[handle]));
184184
EG(objects_store).object_buckets[handle] = SET_OBJ_INVALID(object);
185185
if (!(OBJ_FLAGS(object) & IS_OBJ_FREE_CALLED)) {
186186
GC_ADD_FLAGS(object, IS_OBJ_FREE_CALLED);
187-
GC_ADDREF(object);
187+
GC_SET_REFCOUNT(object, 1);
188188
object->handlers->free_obj(object);
189-
GC_DELREF(object);
190189
}
191190
ptr = ((char*)object) - object->handlers->offset;
192191
GC_REMOVE_FROM_BUFFER(object);

0 commit comments

Comments
 (0)