diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2015-04-28 19:11:45 +0300 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2015-04-28 19:11:45 +0300 |
| commit | 388c2cbdbc5a4d24a2ff52402212117348c085b4 (patch) | |
| tree | d582999a8d0c89277072ed06a46424bc4829529e /Zend/zend_opcode.c | |
| parent | 612de5214ff0b1db89516fc970984a350b065b2b (diff) | |
| download | php-git-388c2cbdbc5a4d24a2ff52402212117348c085b4.tar.gz | |
Micro optimizations
Diffstat (limited to 'Zend/zend_opcode.c')
| -rw-r--r-- | Zend/zend_opcode.c | 56 |
1 files changed, 31 insertions, 25 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 98734dc533..43ba64ad3f 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -154,13 +154,15 @@ ZEND_API void zend_cleanup_user_class_data(zend_class_entry *ce) } if (ce->static_members_table) { zval *static_members = ce->static_members_table; - int count = ce->default_static_members_count; - int i; + zval *p = static_members; + zval *end = p + ce->default_static_members_count; + ce->default_static_members_count = 0; ce->default_static_members_table = ce->static_members_table = NULL; - for (i = 0; i < count; i++) { - zval_ptr_dtor(&static_members[i]); + while (p != end) { + i_zval_ptr_dtor(p ZEND_FILE_LINE_CC); + p++; } efree(static_members); } @@ -170,15 +172,17 @@ ZEND_API void zend_cleanup_internal_class_data(zend_class_entry *ce) { if (CE_STATIC_MEMBERS(ce)) { zval *static_members = CE_STATIC_MEMBERS(ce); - int i; + zval *p = static_members; + zval *end = p + ce->default_static_members_count; #ifdef ZTS CG(static_members_table)[(zend_intptr_t)(ce->static_members_table)] = NULL; #else ce->static_members_table = NULL; #endif - for (i = 0; i < ce->default_static_members_count; i++) { - zval_ptr_dtor(&static_members[i]); + while (p != end) { + i_zval_ptr_dtor(p ZEND_FILE_LINE_CC); + p++; } efree(static_members); } @@ -249,22 +253,22 @@ ZEND_API void destroy_zend_class(zval *zv) switch (ce->type) { case ZEND_USER_CLASS: if (ce->default_properties_table) { - int i; + zval *p = ce->default_properties_table; + zval *end = p + ce->default_properties_count; - for (i = 0; i < ce->default_properties_count; i++) { - if (Z_TYPE(ce->default_properties_table[i]) != IS_UNDEF) { - zval_ptr_dtor(&ce->default_properties_table[i]); - } + while (p != end) { + i_zval_ptr_dtor(p ZEND_FILE_LINE_CC); + p++; } efree(ce->default_properties_table); } if (ce->default_static_members_table) { - int i; + zval *p = ce->default_static_members_table; + zval *end = p + ce->default_static_members_count; - for (i = 0; i < ce->default_static_members_count; i++) { - if (Z_TYPE(ce->default_static_members_table[i]) != IS_UNDEF) { - zval_ptr_dtor(&ce->default_static_members_table[i]); - } + while (p != end) { + i_zval_ptr_dtor(p ZEND_FILE_LINE_CC); + p++; } efree(ce->default_static_members_table); } @@ -292,20 +296,22 @@ ZEND_API void destroy_zend_class(zval *zv) break; case ZEND_INTERNAL_CLASS: if (ce->default_properties_table) { - int i; + zval *p = ce->default_properties_table; + zval *end = p + ce->default_properties_count; - for (i = 0; i < ce->default_properties_count; i++) { - if (Z_TYPE(ce->default_properties_table[i]) != IS_UNDEF) { - zval_internal_ptr_dtor(&ce->default_properties_table[i]); - } + while (p != end) { + zval_internal_ptr_dtor(p); + p++; } free(ce->default_properties_table); } if (ce->default_static_members_table) { - int i; + zval *p = ce->default_static_members_table; + zval *end = p + ce->default_static_members_count; - for (i = 0; i < ce->default_static_members_count; i++) { - zval_internal_ptr_dtor(&ce->default_static_members_table[i]); + while (p != end) { + zval_internal_ptr_dtor(p); + p++; } free(ce->default_static_members_table); } |
