Lines Matching refs:ce

169 ZEND_API void zend_cleanup_internal_class_data(zend_class_entry *ce)  in zend_cleanup_internal_class_data()  argument
171 if (CE_STATIC_MEMBERS(ce)) { in zend_cleanup_internal_class_data()
172 zval *static_members = CE_STATIC_MEMBERS(ce); in zend_cleanup_internal_class_data()
174 zval *end = p + ce->default_static_members_count; in zend_cleanup_internal_class_data()
175 if (UNEXPECTED(ZEND_MAP_PTR(ce->static_members_table) == &ce->default_static_members_table)) { in zend_cleanup_internal_class_data()
184 if (prop_info->ce == ce && p - static_members == prop_info->offset) { in zend_cleanup_internal_class_data()
195 ZEND_MAP_PTR_SET(ce->static_members_table, NULL); in zend_cleanup_internal_class_data()
200 if (prop_info->ce == ce && p - static_members == prop_info->offset) { in zend_cleanup_internal_class_data()
214 static void _destroy_zend_class_traits_info(zend_class_entry *ce) in _destroy_zend_class_traits_info() argument
218 for (i = 0; i < ce->num_traits; i++) { in _destroy_zend_class_traits_info()
219 zend_string_release_ex(ce->trait_names[i].name, 0); in _destroy_zend_class_traits_info()
220 zend_string_release_ex(ce->trait_names[i].lc_name, 0); in _destroy_zend_class_traits_info()
222 efree(ce->trait_names); in _destroy_zend_class_traits_info()
224 if (ce->trait_aliases) { in _destroy_zend_class_traits_info()
226 while (ce->trait_aliases[i]) { in _destroy_zend_class_traits_info()
227 if (ce->trait_aliases[i]->trait_method.method_name) { in _destroy_zend_class_traits_info()
228 zend_string_release_ex(ce->trait_aliases[i]->trait_method.method_name, 0); in _destroy_zend_class_traits_info()
230 if (ce->trait_aliases[i]->trait_method.class_name) { in _destroy_zend_class_traits_info()
231 zend_string_release_ex(ce->trait_aliases[i]->trait_method.class_name, 0); in _destroy_zend_class_traits_info()
234 if (ce->trait_aliases[i]->alias) { in _destroy_zend_class_traits_info()
235 zend_string_release_ex(ce->trait_aliases[i]->alias, 0); in _destroy_zend_class_traits_info()
238 efree(ce->trait_aliases[i]); in _destroy_zend_class_traits_info()
242 efree(ce->trait_aliases); in _destroy_zend_class_traits_info()
245 if (ce->trait_precedences) { in _destroy_zend_class_traits_info()
249 while (ce->trait_precedences[i]) { in _destroy_zend_class_traits_info()
250 zend_string_release_ex(ce->trait_precedences[i]->trait_method.method_name, 0); in _destroy_zend_class_traits_info()
251 zend_string_release_ex(ce->trait_precedences[i]->trait_method.class_name, 0); in _destroy_zend_class_traits_info()
253 for (j = 0; j < ce->trait_precedences[i]->num_excludes; j++) { in _destroy_zend_class_traits_info()
254 zend_string_release_ex(ce->trait_precedences[i]->exclude_class_names[j], 0); in _destroy_zend_class_traits_info()
256 efree(ce->trait_precedences[i]); in _destroy_zend_class_traits_info()
259 efree(ce->trait_precedences); in _destroy_zend_class_traits_info()
266 zend_class_entry *ce = Z_PTR_P(zv); in destroy_zend_class() local
269 if (ce->ce_flags & (ZEND_ACC_IMMUTABLE|ZEND_ACC_PRELOADED)) { in destroy_zend_class()
272 if (ce->default_static_members_count) { in destroy_zend_class()
273 zend_cleanup_internal_class_data(ce); in destroy_zend_class()
275 if (ce->ce_flags & ZEND_HAS_STATIC_IN_METHODS) { in destroy_zend_class()
276 ZEND_HASH_FOREACH_PTR(&ce->function_table, op_array) { in destroy_zend_class()
283 } else if (--ce->refcount > 0) { in destroy_zend_class()
286 switch (ce->type) { in destroy_zend_class()
288 if (ce->parent_name && !(ce->ce_flags & ZEND_ACC_RESOLVED_PARENT)) { in destroy_zend_class()
289 zend_string_release_ex(ce->parent_name, 0); in destroy_zend_class()
291 if (ce->default_properties_table) { in destroy_zend_class()
292 zval *p = ce->default_properties_table; in destroy_zend_class()
293 zval *end = p + ce->default_properties_count; in destroy_zend_class()
299 efree(ce->default_properties_table); in destroy_zend_class()
301 if (ce->default_static_members_table) { in destroy_zend_class()
302 zval *p = ce->default_static_members_table; in destroy_zend_class()
303 zval *end = p + ce->default_static_members_count; in destroy_zend_class()
309 if (prop_info->ce == ce && p - ce->default_static_members_table == prop_info->offset) { in destroy_zend_class()
318 efree(ce->default_static_members_table); in destroy_zend_class()
320 ZEND_HASH_FOREACH_PTR(&ce->properties_info, prop_info) { in destroy_zend_class()
321 if (prop_info->ce == ce) { in destroy_zend_class()
332 zend_hash_destroy(&ce->properties_info); in destroy_zend_class()
333 zend_string_release_ex(ce->name, 0); in destroy_zend_class()
334 zend_hash_destroy(&ce->function_table); in destroy_zend_class()
335 if (zend_hash_num_elements(&ce->constants_table)) { in destroy_zend_class()
338 ZEND_HASH_FOREACH_PTR(&ce->constants_table, c) { in destroy_zend_class()
339 if (c->ce == ce) { in destroy_zend_class()
350 zend_hash_destroy(&ce->constants_table); in destroy_zend_class()
351 if (ce->num_interfaces > 0) { in destroy_zend_class()
352 if (!(ce->ce_flags & ZEND_ACC_RESOLVED_INTERFACES)) { in destroy_zend_class()
355 for (i = 0; i < ce->num_interfaces; i++) { in destroy_zend_class()
356 zend_string_release_ex(ce->interface_names[i].name, 0); in destroy_zend_class()
357 zend_string_release_ex(ce->interface_names[i].lc_name, 0); in destroy_zend_class()
360 efree(ce->interfaces); in destroy_zend_class()
362 zend_string_release_ex(ce->info.user.filename, 0); in destroy_zend_class()
363 if (ce->info.user.doc_comment) { in destroy_zend_class()
364 zend_string_release_ex(ce->info.user.doc_comment, 0); in destroy_zend_class()
366 if (ce->attributes) { in destroy_zend_class()
367 zend_hash_release(ce->attributes); in destroy_zend_class()
370 if (ce->num_traits > 0) { in destroy_zend_class()
371 _destroy_zend_class_traits_info(ce); in destroy_zend_class()
376 if (ce->default_properties_table) { in destroy_zend_class()
377 zval *p = ce->default_properties_table; in destroy_zend_class()
378 zval *end = p + ce->default_properties_count; in destroy_zend_class()
384 free(ce->default_properties_table); in destroy_zend_class()
386 if (ce->default_static_members_table) { in destroy_zend_class()
387 zval *p = ce->default_static_members_table; in destroy_zend_class()
388 zval *end = p + ce->default_static_members_count; in destroy_zend_class()
394 free(ce->default_static_members_table); in destroy_zend_class()
395 if (ZEND_MAP_PTR(ce->static_members_table) != &ce->default_static_members_table) { in destroy_zend_class()
396 zend_cleanup_internal_class_data(ce); in destroy_zend_class()
399 zend_hash_destroy(&ce->properties_info); in destroy_zend_class()
400 zend_string_release_ex(ce->name, 1); in destroy_zend_class()
403 ZEND_HASH_FOREACH_PTR(&ce->function_table, fn) { in destroy_zend_class()
404 if (fn->common.scope == ce) { in destroy_zend_class()
416 zend_hash_destroy(&ce->function_table); in destroy_zend_class()
417 if (zend_hash_num_elements(&ce->constants_table)) { in destroy_zend_class()
420 ZEND_HASH_FOREACH_PTR(&ce->constants_table, c) { in destroy_zend_class()
421 if (c->ce == ce) { in destroy_zend_class()
432 zend_hash_destroy(&ce->constants_table); in destroy_zend_class()
434 if (ce->iterator_funcs_ptr) { in destroy_zend_class()
435 free(ce->iterator_funcs_ptr); in destroy_zend_class()
437 if (ce->num_interfaces > 0) { in destroy_zend_class()
438 free(ce->interfaces); in destroy_zend_class()
440 if (ce->properties_info_table) { in destroy_zend_class()
441 free(ce->properties_info_table); in destroy_zend_class()
443 if (ce->attributes) { in destroy_zend_class()
444 zend_hash_release(ce->attributes); in destroy_zend_class()
446 free(ce); in destroy_zend_class()
453 zend_class_entry *ce = Z_PTR_P(zv); in zend_class_add_ref() local
455 if (!(ce->ce_flags & ZEND_ACC_IMMUTABLE)) { in zend_class_add_ref()
456 ce->refcount++; in zend_class_add_ref()