Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros
authorDmitry Stogov <dmitry@zend.com>
Tue, 28 May 2019 17:10:02 +0000 (20:10 +0300)
committerDmitry Stogov <dmitry@zend.com>
Tue, 28 May 2019 17:10:02 +0000 (20:10 +0300)
29 files changed:
Zend/zend_closures.c
Zend/zend_generators.c
Zend/zend_interfaces.c
Zend/zend_object_handlers.c
ext/com_dotnet/com_saproxy.c
ext/date/php_date.c
ext/dom/dom_iterators.c
ext/ffi/ffi.c
ext/gmp/gmp.c
ext/intl/breakiterator/breakiterator_iterators.cpp
ext/intl/collator/collator_sort.c
ext/intl/common/common_enum.cpp
ext/intl/resourcebundle/resourcebundle_iterator.c
ext/mysqli/mysqli_result_iterator.c
ext/pdo/pdo_dbh.c
ext/pdo/pdo_stmt.c
ext/reflection/php_reflection.c
ext/simplexml/simplexml.c
ext/soap/soap.c
ext/spl/spl_array.c
ext/spl/spl_directory.c
ext/spl/spl_dllist.c
ext/spl/spl_fixedarray.c
ext/spl/spl_heap.c
ext/spl/spl_iterators.c
ext/sqlite3/sqlite3.c
ext/standard/user_filters.c
ext/standard/var.c
ext/xml/xml.c

index faeadd6fd74f69283d8bfbcabda224214c0fc76a..7aaee192b7dc77f33300ae45e16dca59a056fe1d 100644 (file)
@@ -742,7 +742,8 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func, zend_class_ent
        if (scope) {
                closure->func.common.fn_flags |= ZEND_ACC_PUBLIC;
                if (this_ptr && Z_TYPE_P(this_ptr) == IS_OBJECT && (closure->func.common.fn_flags & ZEND_ACC_STATIC) == 0) {
-                       ZVAL_COPY(&closure->this_ptr, this_ptr);
+                       Z_ADDREF_P(this_ptr);
+                       ZVAL_OBJ(&closure->this_ptr, Z_OBJ_P(this_ptr));
                }
        }
 }
index 6b3f148b5b374fca0ad0eab02386a7e88d80adb7..8f7ca83e2a23ed89ae15101aef65afc153573e16 100644 (file)
@@ -1165,7 +1165,8 @@ zend_object_iterator *zend_generator_get_iterator(zend_class_entry *ce, zval *ob
        zend_iterator_init(iterator);
 
        iterator->funcs = &zend_generator_iterator_functions;
-       ZVAL_COPY(&iterator->data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->data, Z_OBJ_P(object));
 
        return iterator;
 }
index 6c918c09fbac16ef05737424209ab2ef2be22eed..4d58a9898a25becb03909e78f17c8e0e682c7327 100644 (file)
@@ -249,7 +249,8 @@ static zend_object_iterator *zend_user_it_get_iterator(zend_class_entry *ce, zva
 
        zend_iterator_init((zend_object_iterator*)iterator);
 
-       ZVAL_COPY(&iterator->it.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->it.data, Z_OBJ_P(object));
        iterator->it.funcs = &zend_interface_iterator_funcs_iterator;
        iterator->ce = Z_OBJCE_P(object);
        ZVAL_UNDEF(&iterator->value);
index 8a75c51de6579a66deaf10f4235d75bc7493e44a..2c1d5ec555e0a5ecc8b12a9fe93b8f9a13ffb8d3 100644 (file)
@@ -915,7 +915,8 @@ ZEND_API zval *zend_std_read_dimension(zval *object, zval *offset, int type, zva
                        ZVAL_COPY_DEREF(&tmp_offset, offset);
                }
 
-               ZVAL_COPY(&tmp_object, object);
+               Z_ADDREF_P(object);
+               ZVAL_OBJ(&tmp_object, Z_OBJ_P(object));
                if (type == BP_VAR_IS) {
                        zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetexists", rv, &tmp_offset);
                        if (UNEXPECTED(Z_ISUNDEF_P(rv))) {
@@ -962,7 +963,8 @@ ZEND_API void zend_std_write_dimension(zval *object, zval *offset, zval *value)
                } else {
                        ZVAL_COPY_DEREF(&tmp_offset, offset);
                }
-               ZVAL_COPY(&tmp_object, object);
+               Z_ADDREF_P(object);
+               ZVAL_OBJ(&tmp_object, Z_OBJ_P(object));
                zend_call_method_with_2_params(&tmp_object, ce, NULL, "offsetset", NULL, &tmp_offset, value);
                zval_ptr_dtor(&tmp_object);
                zval_ptr_dtor(&tmp_offset);
@@ -980,7 +982,8 @@ ZEND_API int zend_std_has_dimension(zval *object, zval *offset, int check_empty)
 
        if (EXPECTED(instanceof_function_ex(ce, zend_ce_arrayaccess, 1) != 0)) {
                ZVAL_COPY_DEREF(&tmp_offset, offset);
-               ZVAL_COPY(&tmp_object, object);
+               Z_ADDREF_P(object);
+               ZVAL_OBJ(&tmp_object, Z_OBJ_P(object));
                zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetexists", &retval, &tmp_offset);
                result = i_zend_is_true(&retval);
                zval_ptr_dtor(&retval);
@@ -1136,7 +1139,8 @@ ZEND_API void zend_std_unset_dimension(zval *object, zval *offset) /* {{{ */
 
        if (instanceof_function_ex(ce, zend_ce_arrayaccess, 1)) {
                ZVAL_COPY_DEREF(&tmp_offset, offset);
-               ZVAL_COPY(&tmp_object, object);
+               Z_ADDREF_P(object);
+               ZVAL_OBJ(&tmp_object, Z_OBJ_P(object));
                zend_call_method_with_1_params(&tmp_object, ce, NULL, "offsetunset", NULL, &tmp_offset);
                zval_ptr_dtor(&tmp_object);
                zval_ptr_dtor(&tmp_offset);
index 15f68367c48dd68b15db97a2049cdcd599650735..5f43c9fe25a9b7deb07343f2952b38f6fde13829 100644 (file)
@@ -550,7 +550,8 @@ zend_object_iterator *php_com_saproxy_iter_get(zend_class_entry *ce, zval *objec
        Z_PTR(I->iter.data) = I;
 
        I->proxy = proxy;
-       ZVAL_COPY(&I->proxy_obj, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&I->proxy_obj, Z_OBJ_P(object));
 
        I->indices = safe_emalloc(proxy->dimensions + 1, sizeof(LONG), 0);
        for (i = 0; i < proxy->dimensions; i++) {
index 4d0a20df9743c87b234708f0bd2ffc0c3d2a5a7a..9aa5343e92c54326b56347daf52409c9f436ba99 100644 (file)
@@ -2009,7 +2009,8 @@ zend_object_iterator *date_object_period_get_iterator(zend_class_entry *ce, zval
 
        zend_iterator_init((zend_object_iterator*)iterator);
 
-       ZVAL_COPY(&iterator->intern.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(object));
        iterator->intern.funcs = &date_period_it_funcs;
        iterator->object = Z_PHPPERIOD_P(object);
        ZVAL_UNDEF(&iterator->current);
@@ -3262,7 +3263,7 @@ PHP_FUNCTION(date_modify)
        }
 
        Z_ADDREF_P(object);
-       ZVAL_COPY_VALUE(return_value, object);
+       ZVAL_OBJ(return_value, Z_OBJ_P(object));
 }
 /* }}} */
 
@@ -3318,7 +3319,7 @@ PHP_FUNCTION(date_add)
        php_date_add(object, interval, return_value);
 
        Z_ADDREF_P(object);
-       ZVAL_COPY_VALUE(return_value, object);
+       ZVAL_OBJ(return_value, Z_OBJ_P(object));
 }
 /* }}} */
 
@@ -3375,7 +3376,7 @@ PHP_FUNCTION(date_sub)
        php_date_sub(object, interval, return_value);
 
        Z_ADDREF_P(object);
-       ZVAL_COPY_VALUE(return_value, object);
+       ZVAL_OBJ(return_value, Z_OBJ_P(object));
 }
 /* }}} */
 
@@ -3479,7 +3480,7 @@ PHP_FUNCTION(date_timezone_set)
        php_date_timezone_set(object, timezone_object, return_value);
 
        Z_ADDREF_P(object);
-       ZVAL_COPY_VALUE(return_value, object);
+       ZVAL_OBJ(return_value, Z_OBJ_P(object));
 }
 /* }}} */
 
@@ -3565,7 +3566,7 @@ PHP_FUNCTION(date_time_set)
        php_date_time_set(object, h, i, s, ms, return_value);
 
        Z_ADDREF_P(object);
-       ZVAL_COPY_VALUE(return_value, object);
+       ZVAL_OBJ(return_value, Z_OBJ_P(object));
 }
 /* }}} */
 
@@ -3615,7 +3616,7 @@ PHP_FUNCTION(date_date_set)
        php_date_date_set(object, y, m, d, return_value);
 
        Z_ADDREF_P(object);
-       ZVAL_COPY_VALUE(return_value, object);
+       ZVAL_OBJ(return_value, Z_OBJ_P(object));
 }
 /* }}} */
 
@@ -3669,7 +3670,7 @@ PHP_FUNCTION(date_isodate_set)
        php_date_isodate_set(object, y, w, d, return_value);
 
        Z_ADDREF_P(object);
-       ZVAL_COPY_VALUE(return_value, object);
+       ZVAL_OBJ(return_value, Z_OBJ_P(object));
 }
 /* }}} */
 
@@ -3718,7 +3719,7 @@ PHP_FUNCTION(date_timestamp_set)
        php_date_timestamp_set(object, timestamp, return_value);
 
        Z_ADDREF_P(object);
-       ZVAL_COPY_VALUE(return_value, object);
+       ZVAL_OBJ(return_value, Z_OBJ_P(object));
 }
 /* }}} */
 
index 5c9e27ee4017fe13af4928f2b1861a5cbb203d23..7483235c0f377275789d19966233d74648f4e9a9 100644 (file)
@@ -272,7 +272,8 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i
        iterator = emalloc(sizeof(php_dom_iterator));
        zend_iterator_init(&iterator->intern);
 
-       ZVAL_COPY(&iterator->intern.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(object));
        iterator->intern.funcs = &php_dom_iterator_funcs;
 
        ZVAL_UNDEF(&iterator->curobj);
index 4b08c9cf2aa1dc16f9e0b561648e48ad4bb4788a..08e96f43d75c8210e7263079af0f304c140dfbe5 100644 (file)
@@ -1815,7 +1815,8 @@ static zend_object_iterator *zend_ffi_cdata_get_iterator(zend_class_entry *ce, z
 
        zend_iterator_init(&iter->it);
 
-       ZVAL_COPY(&iter->it.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iter->it.data, Z_OBJ_P(object));
        iter->it.funcs = &zend_ffi_cdata_it_funcs;
        iter->key = 0;
        iter->by_ref = by_ref;
index 862f23c29e66700255aa651abef10ae35a84536e..716165078f864c1199431666cb2c8b3280f15e13 100644 (file)
@@ -605,7 +605,7 @@ static int gmp_unserialize(zval *object, zend_class_entry *ce, const unsigned ch
 
        /* The "object" variable may be modified during the execution of this unserialize handler
         * (it may turn into a reference). Keep the original object around for further operations. */
-       ZVAL_COPY_VALUE(&object_copy, object);
+       ZVAL_OBJ(&object_copy, Z_OBJ_P(object));
 
        p = buf;
        max = buf + buf_len;
index 9969561206029ccb650a61efdb2cf51c3be8395f..1635be5601b1fe64fb4e72860e271ba3ab693aa2 100644 (file)
@@ -111,7 +111,8 @@ U_CFUNC zend_object_iterator *_breakiterator_get_iterator(
 
        zoi_with_current *zoi_iter = static_cast<zoi_with_current*>(emalloc(sizeof *zoi_iter));
        zend_iterator_init(&zoi_iter->zoi);
-       ZVAL_COPY(&zoi_iter->zoi.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&zoi_iter->zoi.data, Z_OBJ_P(object));
        zoi_iter->zoi.funcs = &breakiterator_iterator_funcs;
        zoi_iter->zoi.index = 0;
        zoi_iter->destroy_it = _breakiterator_destroy_it;
@@ -220,7 +221,7 @@ void IntlIterator_from_BreakIterator_parts(zval *break_iter_zv,
        ii->iterator->index = 0;
 
        ((zoi_with_current*)ii->iterator)->destroy_it = _breakiterator_parts_destroy_it;
-       ZVAL_COPY_VALUE(&((zoi_with_current*)ii->iterator)->wrapping_obj, object);
+       ZVAL_OBJ(&((zoi_with_current*)ii->iterator)->wrapping_obj, Z_OBJ_P(object));
        ZVAL_UNDEF(&((zoi_with_current*)ii->iterator)->current);
 
        ((zoi_break_iter_parts*)ii->iterator)->bio = Z_INTL_BREAKITERATOR_P(break_iter_zv);
index 292391c43b77274b5ef8eb0f031621b364f80d1b..d1e832aecc6750bde3384a84eedbfd36bc5b8073 100644 (file)
@@ -323,7 +323,7 @@ static void collator_sort_internal( int renumber, INTERNAL_FUNCTION_PARAMETERS )
 
        /* Save specified collator in the request-global (?) variable. */
        ZVAL_COPY_VALUE(&saved_collator, &INTL_G( current_collator ));
-       ZVAL_COPY_VALUE(&INTL_G( current_collator ), object);
+       ZVAL_OBJ(&INTL_G( current_collator ), Z_OBJ_P(object));
 
        /* Sort specified array. */
        zend_hash_sort(hash, collator_compare_func, renumber);
index 5c5e1ca9906085c7de02b65e60359883f10dba14..adc7034d3659bc57a10fdb02c2742ee728d449b9 100644 (file)
@@ -148,7 +148,7 @@ U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *ob
        ii->iterator->funcs = &string_enum_object_iterator_funcs;
        ii->iterator->index = 0;
        ((zoi_with_current*)ii->iterator)->destroy_it = string_enum_destroy_it;
-       ZVAL_COPY_VALUE(&((zoi_with_current*)ii->iterator)->wrapping_obj, object);
+       ZVAL_OBJ(&((zoi_with_current*)ii->iterator)->wrapping_obj, Z_OBJ_P(object));
        ZVAL_UNDEF(&((zoi_with_current*)ii->iterator)->current);
 }
 
index b51f43f22b945cbf659c69b0864422bc2f889330..8bb66a157f98a2735b851fcbcced4e165e741936 100644 (file)
@@ -157,7 +157,8 @@ zend_object_iterator *resourcebundle_get_iterator( zend_class_entry *ce, zval *o
        }
 
        zend_iterator_init(&iterator->intern);
-       ZVAL_COPY(&iterator->intern.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(object));
        iterator->intern.funcs = &resourcebundle_iterator_funcs;
 
        iterator->subject = rb;
index 704c67f5c2be7d1a50b7c456644be13992b2c511..caf19c34d188b8de3c4965ad2bc94586199045f6 100644 (file)
@@ -52,7 +52,8 @@ zend_object_iterator *php_mysqli_result_get_iterator(zend_class_entry *ce, zval
        iterator = ecalloc(1, sizeof(php_mysqli_result_iterator));
        zend_iterator_init(&iterator->intern);
 
-       ZVAL_COPY(&iterator->intern.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(object));
        iterator->intern.funcs = &php_mysqli_result_iterator_funcs;
        iterator->result = Z_MYSQLI_P(object);
        iterator->row_num = -1;
index 160be18387a10326d3080c7f88ae3cda2a967414..aa0edbbb472fdf157254e51447f55e6de17447e2 100644 (file)
@@ -1108,7 +1108,7 @@ static PHP_METHOD(PDO, query)
                }
                /* something broke */
                dbh->query_stmt = stmt;
-               ZVAL_COPY_VALUE(&dbh->query_stmt_zval, return_value);
+               ZVAL_OBJ(&dbh->query_stmt_zval, Z_OBJ_P(return_value));
                Z_DELREF(stmt->database_object_handle);
                ZVAL_UNDEF(&stmt->database_object_handle);
                PDO_HANDLE_STMT_ERR();
index 25dd33bfdf8117876418f5d308540b78f25cd189..92e594c76b70eee3325a6bdf61e76b18fbc04e97 100644 (file)
@@ -2418,7 +2418,8 @@ zend_object_iterator *pdo_stmt_iter_get(zend_class_entry *ce, zval *object, int
        I = ecalloc(1, sizeof(struct php_pdo_iterator));
        zend_iterator_init(&I->iter);
        I->iter.funcs = &pdo_stmt_iter_funcs;
-       ZVAL_COPY(&I->iter.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&I->iter.data, Z_OBJ_P(object));
 
        if (!do_fetch(stmt, 1, &I->fetch_ahead, PDO_FETCH_USE_DEFAULT,
                        PDO_FETCH_ORI_NEXT, 0, 0)) {
index 86f66a4e2e697899072f838978f4d049a8ce822e..e6ca3322cb353295a4e4a5d3c8da4c1c7873f81d 100644 (file)
@@ -1123,7 +1123,7 @@ static void reflection_parameter_factory(zend_function *fptr, zval *closure_obje
        intern->ce = fptr->common.scope;
        if (closure_object) {
                Z_ADDREF_P(closure_object);
-               ZVAL_COPY_VALUE(&intern->obj, closure_object);
+               ZVAL_OBJ(&intern->obj, Z_OBJ_P(closure_object));
        }
 
        prop_name = reflection_prop_name(object);
@@ -1166,7 +1166,7 @@ static void reflection_function_factory(zend_function *function, zval *closure_o
        intern->ce = NULL;
        if (closure_object) {
                Z_ADDREF_P(closure_object);
-               ZVAL_COPY_VALUE(&intern->obj, closure_object);
+               ZVAL_OBJ(&intern->obj, Z_OBJ_P(closure_object));
        }
        ZVAL_STR_COPY(reflection_prop_name(object), function->common.function_name);
 }
@@ -1184,7 +1184,7 @@ static void reflection_method_factory(zend_class_entry *ce, zend_function *metho
        intern->ce = ce;
        if (closure_object) {
                Z_ADDREF_P(closure_object);
-               ZVAL_COPY_VALUE(&intern->obj, closure_object);
+               ZVAL_OBJ(&intern->obj, Z_OBJ_P(closure_object));
        }
 
        ZVAL_STR_COPY(reflection_prop_name(object),
@@ -1532,7 +1532,7 @@ ZEND_METHOD(reflection_function, __construct)
        intern->ptr = fptr;
        intern->ref_type = REF_TYPE_FUNCTION;
        if (closure) {
-               ZVAL_COPY_VALUE(&intern->obj, closure);
+               ZVAL_OBJ(&intern->obj, Z_OBJ_P(closure));
        } else {
                ZVAL_UNDEF(&intern->obj);
        }
@@ -1597,7 +1597,8 @@ ZEND_METHOD(reflection_function, getClosureThis)
        if (!Z_ISUNDEF(intern->obj)) {
                closure_this = zend_get_closure_this_ptr(&intern->obj);
                if (!Z_ISUNDEF_P(closure_this)) {
-                       ZVAL_COPY(return_value, closure_this);
+                       Z_ADDREF_P(closure_this);
+                       ZVAL_OBJ(return_value, Z_OBJ_P(closure_this));
                }
        }
 }
@@ -1637,7 +1638,8 @@ ZEND_METHOD(reflection_function, getClosure)
 
        if (!Z_ISUNDEF(intern->obj)) {
                /* Closures are immutable objects */
-               ZVAL_COPY(return_value, &intern->obj);
+               Z_ADDREF(intern->obj);
+               ZVAL_OBJ(return_value, Z_OBJ(intern->obj));
        } else {
                zend_create_fake_closure(return_value, fptr, NULL, NULL, NULL);
        }
@@ -2066,7 +2068,8 @@ ZEND_METHOD(reflection_generator, __construct)
        }
 
        intern->ref_type = REF_TYPE_GENERATOR;
-       ZVAL_COPY(&intern->obj, generator);
+       Z_ADDREF_P(generator);
+       ZVAL_OBJ(&intern->obj, Z_OBJ_P(generator));
        intern->ce = zend_ce_generator;
 }
 /* }}} */
@@ -2182,7 +2185,8 @@ ZEND_METHOD(reflection_generator, getThis)
        REFLECTION_CHECK_VALID_GENERATOR(ex)
 
        if (Z_TYPE(ex->This) == IS_OBJECT) {
-               ZVAL_COPY(return_value, &ex->This);
+               Z_ADDREF(ex->This);
+               ZVAL_OBJ(return_value, Z_OBJ(ex->This));
        } else {
                ZVAL_NULL(return_value);
        }
@@ -3032,7 +3036,8 @@ ZEND_METHOD(reflection_method, getClosure)
                if (Z_OBJCE_P(obj) == zend_ce_closure &&
                        (mptr->internal_function.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE))
                {
-                       ZVAL_COPY(return_value, obj);
+                       Z_ADDREF_P(obj);
+                       ZVAL_OBJ(return_value, Z_OBJ_P(obj));
                } else {
                        zend_create_fake_closure(return_value, mptr, mptr->common.scope, Z_OBJCE_P(obj), obj);
                }
index 7f94091c25a1cc2706afd4d0ef4e339f1236525c..8077fba77d2206b7c3740a4ae75ceb1368b1cc6f 100644 (file)
@@ -356,7 +356,7 @@ long_dim:
        }
 
        if (Z_ISUNDEF_P(rv)) {
-               ZVAL_COPY_VALUE(rv, &EG(uninitialized_zval));
+               ZVAL_NULL(rv);
        }
 
        return rv;
@@ -2397,7 +2397,8 @@ zend_object_iterator *php_sxe_get_iterator(zend_class_entry *ce, zval *object, i
        iterator = emalloc(sizeof(php_sxe_iterator));
        zend_iterator_init(&iterator->intern);
 
-       ZVAL_COPY(&iterator->intern.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(object));
        iterator->intern.funcs = &php_sxe_iterator_funcs;
        iterator->sxe = Z_SXEOBJ_P(object);
 
index 73ee89ea93838abc6e326a3e782373fa87fa5763..663f260920d7d1e5da83ed2b54fd6578dcad1b4e 100644 (file)
@@ -1321,7 +1321,8 @@ PHP_METHOD(SoapServer, setObject)
 
        service->type = SOAP_OBJECT;
 
-       ZVAL_COPY(&service->soap_object, obj);
+       Z_ADDREF_P(obj);
+       ZVAL_OBJ(&service->soap_object, Z_OBJ_P(obj));
 
        SOAP_SERVER_END_CODE();
 }
@@ -2023,7 +2024,8 @@ PHP_METHOD(SoapServer, addSoapHeader)
        *p = emalloc(sizeof(soapHeader));
        memset(*p, 0, sizeof(soapHeader));
        ZVAL_NULL(&(*p)->function_name);
-       ZVAL_COPY(&(*p)->retval, fault);
+       Z_ADDREF_P(fault);
+       ZVAL_OBJ(&(*p)->retval, Z_OBJ_P(fault));
 
        SOAP_SERVER_END_CODE();
 }
index 0181c84f2762dcbbb09f357346779158088bc17b..32f1fd8bbdb862564db13be364e5370df2dcc7c5 100644 (file)
@@ -1163,7 +1163,8 @@ zend_object_iterator *spl_array_get_iterator(zend_class_entry *ce, zval *object,
 
        zend_iterator_init(&iterator->it);
 
-       ZVAL_COPY(&iterator->it.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->it.data, Z_OBJ_P(object));
        iterator->it.funcs = &spl_array_it_funcs;
        iterator->ce = ce;
        ZVAL_UNDEF(&iterator->value);
index cb31bb20e9502589ee469607fa7f14111fd65b66..7e9289c9026494198d3a8c9bc915e404afff81fd 100644 (file)
@@ -1650,7 +1650,8 @@ zend_object_iterator *spl_filesystem_dir_get_iterator(zend_class_entry *ce, zval
        }
        dir_object = Z_SPLFILESYSTEM_P(object);
        iterator = spl_filesystem_object_to_iterator(dir_object);
-       ZVAL_COPY(&iterator->intern.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(object));
        iterator->intern.funcs = &spl_filesystem_dir_it_funcs;
        /* ->current must be initialized; rewind doesn't set it and valid
         * doesn't check whether it's set */
@@ -1851,7 +1852,8 @@ zend_object_iterator *spl_filesystem_tree_get_iterator(zend_class_entry *ce, zva
        dir_object = Z_SPLFILESYSTEM_P(object);
        iterator = spl_filesystem_object_to_iterator(dir_object);
 
-       ZVAL_COPY(&iterator->intern.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(object));
        iterator->intern.funcs = &spl_filesystem_tree_it_funcs;
 
        return &iterator->intern;
index 19be408d813531de1d9e5852bafe26ce1c21e39d..abada18a0f44e962614ac73c3b3962f0438a5312 100644 (file)
@@ -1360,7 +1360,8 @@ zend_object_iterator *spl_dllist_get_iterator(zend_class_entry *ce, zval *object
 
        zend_iterator_init((zend_object_iterator*)iterator);
 
-       ZVAL_COPY(&iterator->intern.it.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.it.data, Z_OBJ_P(object));
        iterator->intern.it.funcs    = &spl_dllist_it_funcs;
        iterator->intern.ce          = ce;
        iterator->traverse_position  = dllist_object->traverse_position;
index 5e4a85bf12a4443d6a5468b4cc4d848a3f1a5d78..d80509f85198a2197aeb3011b2861986d596c038 100644 (file)
@@ -1008,7 +1008,8 @@ zend_object_iterator *spl_fixedarray_get_iterator(zend_class_entry *ce, zval *ob
 
        zend_iterator_init((zend_object_iterator*)iterator);
 
-       ZVAL_COPY(&iterator->intern.it.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.it.data, Z_OBJ_P(object));
        iterator->intern.it.funcs = &spl_fixedarray_it_funcs;
        iterator->intern.ce = ce;
        ZVAL_UNDEF(&iterator->intern.value);
index 637a978747702f15b92b6133312377bfa2c41644..6de7adb7622fc6289ea293a2fd68239fb520456e 100644 (file)
@@ -1095,7 +1095,8 @@ zend_object_iterator *spl_heap_get_iterator(zend_class_entry *ce, zval *object,
 
        zend_iterator_init(&iterator->intern.it);
 
-       ZVAL_COPY(&iterator->intern.it.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.it.data, Z_OBJ_P(object));
        iterator->intern.it.funcs = &spl_heap_it_funcs;
        iterator->intern.ce       = ce;
        iterator->flags           = heap_object->flags;
@@ -1119,7 +1120,8 @@ zend_object_iterator *spl_pqueue_get_iterator(zend_class_entry *ce, zval *object
 
        zend_iterator_init((zend_object_iterator*)iterator);
 
-       ZVAL_COPY(&iterator->intern.it.data, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&iterator->intern.it.data, Z_OBJ_P(object));
        iterator->intern.it.funcs = &spl_pqueue_it_funcs;
        iterator->intern.ce       = ce;
        iterator->flags           = heap_object->flags;
index 56960770ed86a22d70e3dbd51aef1b7c241f909d..697d5f1d9118a2f7434b4491b75a693b8a9aecb9 100644 (file)
@@ -469,7 +469,8 @@ static zend_object_iterator *spl_recursive_it_get_iterator(zend_class_entry *ce,
 
        zend_iterator_init((zend_object_iterator*)iterator);
 
-       ZVAL_COPY(&iterator->intern.data, zobject);
+       Z_ADDREF_P(zobject);
+       ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(zobject));
        iterator->intern.funcs = &spl_recursive_it_iterator_funcs;
        return (zend_object_iterator*)iterator;
 }
@@ -582,7 +583,7 @@ static void spl_recursive_it_it_construct(INTERNAL_FUNCTION_PARAMETERS, zend_cla
 
        ce_iterator = Z_OBJCE_P(iterator); /* respect inheritance, don't use spl_ce_RecursiveIterator */
        intern->iterators[0].iterator = ce_iterator->get_iterator(ce_iterator, iterator, 0);
-       ZVAL_COPY_VALUE(&intern->iterators[0].zobject, iterator);
+       ZVAL_OBJ(&intern->iterators[0].zobject, Z_OBJ_P(iterator));
        intern->iterators[0].ce = ce_iterator;
        intern->iterators[0].state = RS_START;
 
@@ -1572,9 +1573,9 @@ static spl_dual_it_object* spl_dual_it_construct(INTERNAL_FUNCTION_PARAMETERS, z
        }
 
        if (inc_refcount) {
-               Z_TRY_ADDREF_P(zobject);
+               Z_ADDREF_P(zobject);
        }
-       ZVAL_COPY_VALUE(&intern->inner.zobject, zobject);
+       ZVAL_OBJ(&intern->inner.zobject, Z_OBJ_P(zobject));
 
        intern->inner.ce = dit_type == DIT_IteratorIterator ? ce : Z_OBJCE_P(zobject);
        intern->inner.object = Z_OBJ_P(zobject);
index c0f88198f3cba3245e6b2035bd36d8d645c2c0bf..b993d622ff9771de20f48d0776628a10fec2cdeb 100644 (file)
@@ -483,7 +483,8 @@ PHP_METHOD(sqlite3, prepare)
        object_init_ex(return_value, php_sqlite3_stmt_entry);
        stmt_obj = Z_SQLITE3_STMT_P(return_value);
        stmt_obj->db_obj = db_obj;
-       ZVAL_COPY(&stmt_obj->db_obj_zval, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&stmt_obj->db_obj_zval, Z_OBJ_P(object));
 
        errcode = sqlite3_prepare_v2(db_obj->db, ZSTR_VAL(sql), ZSTR_LEN(sql), &(stmt_obj->stmt), NULL);
        if (errcode != SQLITE_OK) {
@@ -496,7 +497,7 @@ PHP_METHOD(sqlite3, prepare)
 
        free_item = emalloc(sizeof(php_sqlite3_free_list));
        free_item->stmt_obj = stmt_obj;
-       ZVAL_COPY_VALUE(&free_item->stmt_obj_zval, return_value);
+       ZVAL_OBJ(&free_item->stmt_obj_zval, Z_OBJ_P(return_value));
 
        zend_llist_add_element(&(db_obj->free_list), &free_item);
 }
@@ -538,7 +539,8 @@ PHP_METHOD(sqlite3, query)
        object_init_ex(&stmt, php_sqlite3_stmt_entry);
        stmt_obj = Z_SQLITE3_STMT_P(&stmt);
        stmt_obj->db_obj = db_obj;
-       ZVAL_COPY(&stmt_obj->db_obj_zval, object);
+       Z_ADDREF_P(object);
+       ZVAL_OBJ(&stmt_obj->db_obj_zval, Z_OBJ_P(object));
 
        return_code = sqlite3_prepare_v2(db_obj->db, ZSTR_VAL(sql), ZSTR_LEN(sql), &(stmt_obj->stmt), NULL);
        if (return_code != SQLITE_OK) {
@@ -553,7 +555,7 @@ PHP_METHOD(sqlite3, query)
        result = Z_SQLITE3_RESULT_P(return_value);
        result->db_obj = db_obj;
        result->stmt_obj = stmt_obj;
-       ZVAL_COPY_VALUE(&result->stmt_obj_zval, &stmt);
+       ZVAL_OBJ(&result->stmt_obj_zval, Z_OBJ(stmt));
 
        return_code = sqlite3_step(result->stmt_obj->stmt);
 
@@ -1733,7 +1735,8 @@ PHP_METHOD(sqlite3stmt, execute)
                        result->is_prepared_statement = 1;
                        result->db_obj = stmt_obj->db_obj;
                        result->stmt_obj = stmt_obj;
-                       ZVAL_COPY(&result->stmt_obj_zval, object);
+                       Z_ADDREF_P(object);
+                       ZVAL_OBJ(&result->stmt_obj_zval, Z_OBJ_P(object));
 
                        break;
                }
@@ -1782,7 +1785,8 @@ PHP_METHOD(sqlite3stmt, __construct)
        }
 
        stmt_obj->db_obj = db_obj;
-       ZVAL_COPY(&stmt_obj->db_obj_zval, db_zval);
+       Z_ADDREF_P(db_zval);
+       ZVAL_OBJ(&stmt_obj->db_obj_zval, Z_OBJ_P(db_zval));
 
        errcode = sqlite3_prepare_v2(db_obj->db, ZSTR_VAL(sql), ZSTR_LEN(sql), &(stmt_obj->stmt), NULL);
        if (errcode != SQLITE_OK) {
@@ -1795,7 +1799,7 @@ PHP_METHOD(sqlite3stmt, __construct)
        free_item = emalloc(sizeof(php_sqlite3_free_list));
        free_item->stmt_obj = stmt_obj;
        //??  free_item->stmt_obj_zval = ZEND_THIS;
-       ZVAL_COPY_VALUE(&free_item->stmt_obj_zval, object);
+       ZVAL_OBJ(&free_item->stmt_obj_zval, Z_OBJ_P(object));
 
        zend_llist_add_element(&(db_obj->free_list), &free_item);
 }
index 34e877707c92746769791115d292e1e9a6c753a4..4fb177a3ee8293f7fd40b64ffc646ec9ccb6c1ec 100644 (file)
@@ -368,7 +368,7 @@ static php_stream_filter *user_filter_factory_create(const char *filtername,
 
        /* set the filter property, this will be used during cleanup */
        ZVAL_RES(&zfilter, zend_register_resource(filter, le_userfilters));
-       ZVAL_COPY_VALUE(&filter->abstract, &obj);
+       ZVAL_OBJ(&filter->abstract, Z_OBJ(obj));
        add_property_zval(&obj, "filter", &zfilter);
        /* add_property_zval increments the refcount which is unwanted here */
        zval_ptr_dtor(&zfilter);
index de9de3202fdf8b9f60da478d111909a045ebe102..ca0273c213e4855016aaa2688c7b3d6cf300af07 100644 (file)
@@ -947,7 +947,8 @@ again:
                                        zval *data;
                                        zend_ulong index;
 
-                                       ZVAL_COPY(&obj, struc);
+                                       Z_ADDREF_P(struc);
+                                       ZVAL_OBJ(&obj, Z_OBJ_P(struc));
                                        if (php_var_serialize_call_magic_serialize(&retval, &obj) == FAILURE) {
                                                if (!EG(exception)) {
                                                        smart_str_appendl(buf, "N;", 2);
@@ -1009,7 +1010,9 @@ again:
 
                                if (ce != PHP_IC_ENTRY && zend_hash_str_exists(&ce->function_table, "__sleep", sizeof("__sleep")-1)) {
                                        zval retval, tmp;
-                                       ZVAL_COPY(&tmp, struc);
+                                       
+                                       Z_ADDREF_P(struc);
+                                       ZVAL_OBJ(&tmp, Z_OBJ_P(struc));
 
                                        if (php_var_serialize_call_sleep(&retval, &tmp) == FAILURE) {
                                                if (!EG(exception)) {
index 437b05175c20b452990fc56a79d844d9d7378d99..f60f08bd57f3c0f455ecd90a65facc666638f127 100644 (file)
@@ -1200,7 +1200,8 @@ PHP_FUNCTION(xml_set_object)
        /* please leave this commented - or ask thies@thieso.net before doing it (again) */
        /* zval_add_ref(&parser->object); */
 
-       ZVAL_COPY(&parser->object, mythis);
+       Z_ADDREF_P(mythis);
+       ZVAL_OBJ(&parser->object, Z_OBJ_P(mythis));
 
        RETVAL_TRUE;
 }