summaryrefslogtreecommitdiff
path: root/Zend/zend_objects.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2015-04-28 19:11:45 +0300
committerDmitry Stogov <dmitry@zend.com>2015-04-28 19:11:45 +0300
commit388c2cbdbc5a4d24a2ff52402212117348c085b4 (patch)
treed582999a8d0c89277072ed06a46424bc4829529e /Zend/zend_objects.c
parent612de5214ff0b1db89516fc970984a350b065b2b (diff)
downloadphp-git-388c2cbdbc5a4d24a2ff52402212117348c085b4.tar.gz
Micro optimizations
Diffstat (limited to 'Zend/zend_objects.c')
-rw-r--r--Zend/zend_objects.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/Zend/zend_objects.c b/Zend/zend_objects.c
index 2feff81ea4..2826c322a9 100644
--- a/Zend/zend_objects.c
+++ b/Zend/zend_objects.c
@@ -151,14 +151,18 @@ ZEND_API zend_object *zend_objects_new(zend_class_entry *ce)
ZEND_API void zend_objects_clone_members(zend_object *new_object, zend_object *old_object)
{
- int i;
-
if (old_object->ce->default_properties_count) {
- for (i = 0; i < old_object->ce->default_properties_count; i++) {
- zval_ptr_dtor(&new_object->properties_table[i]);
- ZVAL_COPY_VALUE(&new_object->properties_table[i], &old_object->properties_table[i]);
- zval_add_ref(&new_object->properties_table[i]);
- }
+ zval *src = old_object->properties_table;
+ zval *dst = new_object->properties_table;
+ zval *end = src + old_object->ce->default_properties_count;
+
+ do {
+ i_zval_ptr_dtor(dst ZEND_FILE_LINE_CC);
+ ZVAL_COPY_VALUE(dst, src);
+ zval_add_ref(dst);
+ src++;
+ dst++;
+ } while (src != end);
}
if (old_object->properties) {
zval *prop, new_prop;