static void zend_persist_property_info_calc(zval *zv) { zend_property_info *prop = Z_PTR_P(zv); ADD_ARENA_SIZE(sizeof(zend_property_info)); ADD_INTERNED_STRING(prop->name, 0); if (ZCG(accel_directives).save_comments && prop->doc_comment) { ADD_STRING(prop->doc_comment); } }
static void zend_persist_op_array_calc(zval *zv) { zend_op_array *op_array = Z_PTR_P(zv); if (op_array->type == ZEND_USER_FUNCTION/* && (!op_array->refcount || *(op_array->refcount) > 1)*/) { zend_op_array *old_op_array = zend_shared_alloc_get_xlat_entry(op_array); if (old_op_array) { Z_PTR_P(zv) = old_op_array; } else { ADD_ARENA_SIZE(sizeof(zend_op_array)); zend_persist_op_array_calc_ex(Z_PTR_P(zv)); zend_shared_alloc_register_xlat_entry(op_array, Z_PTR_P(zv)); } } else { ADD_ARENA_SIZE(sizeof(zend_op_array)); zend_persist_op_array_calc_ex(Z_PTR_P(zv)); } }
static void zend_persist_property_info_calc(zval *zv) { zend_property_info *prop = Z_PTR_P(zv); if (!zend_shared_alloc_get_xlat_entry(prop)) { zend_shared_alloc_register_xlat_entry(prop, prop); ADD_ARENA_SIZE(sizeof(zend_property_info)); ADD_INTERNED_STRING(prop->name, 0); if (ZCG(accel_directives).save_comments && prop->doc_comment) { ADD_STRING(prop->doc_comment); } } }
static void zend_persist_class_entry_calc(zval *zv) { zend_class_entry *ce = Z_PTR_P(zv); if (ce->type == ZEND_USER_CLASS) { ADD_ARENA_SIZE(sizeof(zend_class_entry)); ADD_INTERNED_STRING(ce->name, 0); zend_hash_persist_calc(&ce->function_table, zend_persist_op_array_calc); if (ce->default_properties_table) { int i; ADD_SIZE(sizeof(zval) * ce->default_properties_count); for (i = 0; i < ce->default_properties_count; i++) { zend_persist_zval_calc(&ce->default_properties_table[i]); } } if (ce->default_static_members_table) { int i; ADD_SIZE(sizeof(zval) * ce->default_static_members_count); for (i = 0; i < ce->default_static_members_count; i++) { zend_persist_zval_calc(&ce->default_static_members_table[i]); } } zend_hash_persist_calc(&ce->constants_table, zend_persist_zval_calc); if (ZEND_CE_FILENAME(ce)) { ADD_STRING(ZEND_CE_FILENAME(ce)); } if (ZCG(accel_directives).save_comments && ZEND_CE_DOC_COMMENT(ce)) { ADD_STRING(ZEND_CE_DOC_COMMENT(ce)); } zend_hash_persist_calc(&ce->properties_info, zend_persist_property_info_calc); if (ce->trait_aliases) { int i = 0; while (ce->trait_aliases[i]) { if (ce->trait_aliases[i]->trait_method) { if (ce->trait_aliases[i]->trait_method->method_name) { ADD_INTERNED_STRING(ce->trait_aliases[i]->trait_method->method_name, 0); } if (ce->trait_aliases[i]->trait_method->class_name) { ADD_INTERNED_STRING(ce->trait_aliases[i]->trait_method->class_name, 0); } ADD_SIZE(sizeof(zend_trait_method_reference)); } if (ce->trait_aliases[i]->alias) { ADD_INTERNED_STRING(ce->trait_aliases[i]->alias, 0); } ADD_SIZE(sizeof(zend_trait_alias)); i++; } ADD_SIZE(sizeof(zend_trait_alias*) * (i + 1)); } if (ce->trait_precedences) { int i = 0; while (ce->trait_precedences[i]) { ADD_INTERNED_STRING(ce->trait_precedences[i]->trait_method->method_name, 0); ADD_INTERNED_STRING(ce->trait_precedences[i]->trait_method->class_name, 0); ADD_SIZE(sizeof(zend_trait_method_reference)); if (ce->trait_precedences[i]->exclude_from_classes) { int j = 0; while (ce->trait_precedences[i]->exclude_from_classes[j].class_name) { ADD_INTERNED_STRING(ce->trait_precedences[i]->exclude_from_classes[j].class_name, 0); j++; } ADD_SIZE(sizeof(zend_class_entry*) * (j + 1)); } ADD_SIZE(sizeof(zend_trait_precedence)); i++; } ADD_SIZE(sizeof(zend_trait_precedence*) * (i + 1)); } } }
static void zend_persist_op_array_calc(zval *zv) { ADD_ARENA_SIZE(sizeof(zend_op_array)); zend_persist_op_array_calc_ex(Z_PTR_P(zv)); }