Skip to content

Commit b2cdde0

Browse files
committed
Merge branch 'PHP-7.4'
* PHP-7.4: Replace ZVAL_COPY() and ZVAL_COPY_VALUE() for IS_OBJECT by cheaper macros
2 parents 4d1d5ba + 8380451 commit b2cdde0

27 files changed

+93
-58
lines changed

Zend/zend_closures.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -738,7 +738,8 @@ ZEND_API void zend_create_closure(zval *res, zend_function *func, zend_class_ent
738738
if (scope) {
739739
closure->func.common.fn_flags |= ZEND_ACC_PUBLIC;
740740
if (this_ptr && Z_TYPE_P(this_ptr) == IS_OBJECT && (closure->func.common.fn_flags & ZEND_ACC_STATIC) == 0) {
741-
ZVAL_COPY(&closure->this_ptr, this_ptr);
741+
Z_ADDREF_P(this_ptr);
742+
ZVAL_OBJ(&closure->this_ptr, Z_OBJ_P(this_ptr));
742743
}
743744
}
744745
}

Zend/zend_generators.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1165,7 +1165,8 @@ zend_object_iterator *zend_generator_get_iterator(zend_class_entry *ce, zval *ob
11651165
zend_iterator_init(iterator);
11661166

11671167
iterator->funcs = &zend_generator_iterator_functions;
1168-
ZVAL_COPY(&iterator->data, object);
1168+
Z_ADDREF_P(object);
1169+
ZVAL_OBJ(&iterator->data, Z_OBJ_P(object));
11691170

11701171
return iterator;
11711172
}

Zend/zend_interfaces.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,8 @@ static zend_object_iterator *zend_user_it_get_iterator(zend_class_entry *ce, zva
249249

250250
zend_iterator_init((zend_object_iterator*)iterator);
251251

252-
ZVAL_COPY(&iterator->it.data, object);
252+
Z_ADDREF_P(object);
253+
ZVAL_OBJ(&iterator->it.data, Z_OBJ_P(object));
253254
iterator->it.funcs = &zend_interface_iterator_funcs_iterator;
254255
iterator->ce = Z_OBJCE_P(object);
255256
ZVAL_UNDEF(&iterator->value);

ext/com_dotnet/com_saproxy.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -542,7 +542,8 @@ zend_object_iterator *php_com_saproxy_iter_get(zend_class_entry *ce, zval *objec
542542
Z_PTR(I->iter.data) = I;
543543

544544
I->proxy = proxy;
545-
ZVAL_COPY(&I->proxy_obj, object);
545+
Z_ADDREF_P(object);
546+
ZVAL_OBJ(&I->proxy_obj, Z_OBJ_P(object));
546547

547548
I->indices = safe_emalloc(proxy->dimensions + 1, sizeof(LONG), 0);
548549
for (i = 0; i < proxy->dimensions; i++) {

ext/date/php_date.c

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2006,7 +2006,8 @@ zend_object_iterator *date_object_period_get_iterator(zend_class_entry *ce, zval
20062006

20072007
zend_iterator_init((zend_object_iterator*)iterator);
20082008

2009-
ZVAL_COPY(&iterator->intern.data, object);
2009+
Z_ADDREF_P(object);
2010+
ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(object));
20102011
iterator->intern.funcs = &date_period_it_funcs;
20112012
iterator->object = Z_PHPPERIOD_P(object);
20122013
ZVAL_UNDEF(&iterator->current);
@@ -3245,7 +3246,7 @@ PHP_FUNCTION(date_modify)
32453246
}
32463247

32473248
Z_ADDREF_P(object);
3248-
ZVAL_COPY_VALUE(return_value, object);
3249+
ZVAL_OBJ(return_value, Z_OBJ_P(object));
32493250
}
32503251
/* }}} */
32513252

@@ -3301,7 +3302,7 @@ PHP_FUNCTION(date_add)
33013302
php_date_add(object, interval, return_value);
33023303

33033304
Z_ADDREF_P(object);
3304-
ZVAL_COPY_VALUE(return_value, object);
3305+
ZVAL_OBJ(return_value, Z_OBJ_P(object));
33053306
}
33063307
/* }}} */
33073308

@@ -3358,7 +3359,7 @@ PHP_FUNCTION(date_sub)
33583359
php_date_sub(object, interval, return_value);
33593360

33603361
Z_ADDREF_P(object);
3361-
ZVAL_COPY_VALUE(return_value, object);
3362+
ZVAL_OBJ(return_value, Z_OBJ_P(object));
33623363
}
33633364
/* }}} */
33643365

@@ -3462,7 +3463,7 @@ PHP_FUNCTION(date_timezone_set)
34623463
php_date_timezone_set(object, timezone_object, return_value);
34633464

34643465
Z_ADDREF_P(object);
3465-
ZVAL_COPY_VALUE(return_value, object);
3466+
ZVAL_OBJ(return_value, Z_OBJ_P(object));
34663467
}
34673468
/* }}} */
34683469

@@ -3548,7 +3549,7 @@ PHP_FUNCTION(date_time_set)
35483549
php_date_time_set(object, h, i, s, ms, return_value);
35493550

35503551
Z_ADDREF_P(object);
3551-
ZVAL_COPY_VALUE(return_value, object);
3552+
ZVAL_OBJ(return_value, Z_OBJ_P(object));
35523553
}
35533554
/* }}} */
35543555

@@ -3598,7 +3599,7 @@ PHP_FUNCTION(date_date_set)
35983599
php_date_date_set(object, y, m, d, return_value);
35993600

36003601
Z_ADDREF_P(object);
3601-
ZVAL_COPY_VALUE(return_value, object);
3602+
ZVAL_OBJ(return_value, Z_OBJ_P(object));
36023603
}
36033604
/* }}} */
36043605

@@ -3652,7 +3653,7 @@ PHP_FUNCTION(date_isodate_set)
36523653
php_date_isodate_set(object, y, w, d, return_value);
36533654

36543655
Z_ADDREF_P(object);
3655-
ZVAL_COPY_VALUE(return_value, object);
3656+
ZVAL_OBJ(return_value, Z_OBJ_P(object));
36563657
}
36573658
/* }}} */
36583659

@@ -3701,7 +3702,7 @@ PHP_FUNCTION(date_timestamp_set)
37013702
php_date_timestamp_set(object, timestamp, return_value);
37023703

37033704
Z_ADDREF_P(object);
3704-
ZVAL_COPY_VALUE(return_value, object);
3705+
ZVAL_OBJ(return_value, Z_OBJ_P(object));
37053706
}
37063707
/* }}} */
37073708

ext/dom/dom_iterators.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,8 @@ zend_object_iterator *php_dom_get_iterator(zend_class_entry *ce, zval *object, i
272272
iterator = emalloc(sizeof(php_dom_iterator));
273273
zend_iterator_init(&iterator->intern);
274274

275-
ZVAL_COPY(&iterator->intern.data, object);
275+
Z_ADDREF_P(object);
276+
ZVAL_OBJ(&iterator->intern.data, Z_OBJ_P(object));
276277
iterator->intern.funcs = &php_dom_iterator_funcs;
277278

278279
ZVAL_UNDEF(&iterator->curobj);

ext/ffi/ffi.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1792,7 +1792,8 @@ static zend_object_iterator *zend_ffi_cdata_get_iterator(zend_class_entry *ce, z
17921792

17931793
zend_iterator_init(&iter->it);
17941794

1795-
ZVAL_COPY(&iter->it.data, object);
1795+
Z_ADDREF_P(object);
1796+
ZVAL_OBJ(&iter->it.data, Z_OBJ_P(object));
17961797
iter->it.funcs = &zend_ffi_cdata_it_funcs;
17971798
iter->key = 0;
17981799
iter->by_ref = by_ref;

ext/intl/breakiterator/breakiterator_iterators.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ U_CFUNC zend_object_iterator *_breakiterator_get_iterator(
111111

112112
zoi_with_current *zoi_iter = static_cast<zoi_with_current*>(emalloc(sizeof *zoi_iter));
113113
zend_iterator_init(&zoi_iter->zoi);
114-
ZVAL_COPY(&zoi_iter->zoi.data, object);
114+
Z_ADDREF_P(object);
115+
ZVAL_OBJ(&zoi_iter->zoi.data, Z_OBJ_P(object));
115116
zoi_iter->zoi.funcs = &breakiterator_iterator_funcs;
116117
zoi_iter->zoi.index = 0;
117118
zoi_iter->destroy_it = _breakiterator_destroy_it;
@@ -220,7 +221,7 @@ void IntlIterator_from_BreakIterator_parts(zval *break_iter_zv,
220221
ii->iterator->index = 0;
221222

222223
((zoi_with_current*)ii->iterator)->destroy_it = _breakiterator_parts_destroy_it;
223-
ZVAL_COPY_VALUE(&((zoi_with_current*)ii->iterator)->wrapping_obj, object);
224+
ZVAL_OBJ(&((zoi_with_current*)ii->iterator)->wrapping_obj, Z_OBJ_P(object));
224225
ZVAL_UNDEF(&((zoi_with_current*)ii->iterator)->current);
225226

226227
((zoi_break_iter_parts*)ii->iterator)->bio = Z_INTL_BREAKITERATOR_P(break_iter_zv);

ext/intl/collator/collator_sort.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ static void collator_sort_internal( int renumber, INTERNAL_FUNCTION_PARAMETERS )
320320

321321
/* Save specified collator in the request-global (?) variable. */
322322
ZVAL_COPY_VALUE(&saved_collator, &INTL_G( current_collator ));
323-
ZVAL_COPY_VALUE(&INTL_G( current_collator ), object);
323+
ZVAL_OBJ(&INTL_G( current_collator ), Z_OBJ_P(object));
324324

325325
/* Sort specified array. */
326326
zend_hash_sort(hash, collator_compare_func, renumber);

ext/intl/common/common_enum.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ U_CFUNC void IntlIterator_from_StringEnumeration(StringEnumeration *se, zval *ob
148148
ii->iterator->funcs = &string_enum_object_iterator_funcs;
149149
ii->iterator->index = 0;
150150
((zoi_with_current*)ii->iterator)->destroy_it = string_enum_destroy_it;
151-
ZVAL_COPY_VALUE(&((zoi_with_current*)ii->iterator)->wrapping_obj, object);
151+
ZVAL_OBJ(&((zoi_with_current*)ii->iterator)->wrapping_obj, Z_OBJ_P(object));
152152
ZVAL_UNDEF(&((zoi_with_current*)ii->iterator)->current);
153153
}
154154

0 commit comments

Comments
 (0)