ZEND_API void ZEND_FASTCALL zend_objects_store_put(zend_object *object) { int handle; /* When in shutdown sequesnce - do not reuse previously freed handles, to make sure * the dtors for newly created objects are called in zend_objects_store_call_destructors() loop */ if (EG(objects_store).free_list_head != -1 && EXPECTED(!(EG(flags) & EG_FLAGS_IN_SHUTDOWN))) { handle = EG(objects_store).free_list_head; EG(objects_store).free_list_head = GET_OBJ_BUCKET_NUMBER(EG(objects_store).object_buckets[handle]); } else if (UNEXPECTED(EG(objects_store).top == EG(objects_store).size)) { zend_objects_store_put_cold(object); return; } else { handle = EG(objects_store).top++; } object->handle = handle; EG(objects_store).object_buckets[handle] = object; }
ZEND_API void ZEND_FASTCALL zend_objects_store_put(zend_object *object) { int handle; /* When in shutdown sequesnce - do not reuse previously freed handles, to make sure * the dtors for newly created objects are called in zend_objects_store_call_destructors() loop */ if (!(EG(flags) & EG_FLAGS_IN_SHUTDOWN) && EG(objects_store).free_list_head != -1) { handle = EG(objects_store).free_list_head; EG(objects_store).free_list_head = GET_OBJ_BUCKET_NUMBER(EG(objects_store).object_buckets[handle]); } else { if (EG(objects_store).top == EG(objects_store).size) { EG(objects_store).size <<= 1; EG(objects_store).object_buckets = (zend_object **) erealloc(EG(objects_store).object_buckets, EG(objects_store).size * sizeof(zend_object*)); } handle = EG(objects_store).top++; } object->handle = handle; EG(objects_store).object_buckets[handle] = object; }