ext/sockets: using array optimisations. (#18367)

mostly explicit packed arrays.
This commit is contained in:
David CARLIER 2025-04-20 19:34:11 +01:00 committed by GitHub
parent 2c3a2da48a
commit 68d54030a1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 4 additions and 1 deletions

View file

@ -1024,6 +1024,7 @@ static void to_zval_read_control_array(const char *msghdr_c, zval *zv, res_conte
uint32_t i = 1; uint32_t i = 1;
array_init(zv); array_init(zv);
zend_hash_real_init_packed(Z_ARRVAL_P(zv));
for (cmsg = CMSG_FIRSTHDR(msg); for (cmsg = CMSG_FIRSTHDR(msg);
cmsg != NULL && !ctx->err.has_error; cmsg != NULL && !ctx->err.has_error;

View file

@ -1973,6 +1973,7 @@ PHP_FUNCTION(socket_get_option)
size_t arrlen = optlen / sizeof(struct fil_info); size_t arrlen = optlen / sizeof(struct fil_info);
array_init_size(return_value, arrlen); array_init_size(return_value, arrlen);
zend_hash_real_init_packed(Z_ARRVAL_P(return_value));
for (i = 0; i < arrlen; i++) { for (i = 0; i < arrlen; i++) {
add_index_string(return_value, i, fi[i].fi_name); add_index_string(return_value, i, fi[i].fi_name);
@ -2373,7 +2374,7 @@ PHP_FUNCTION(socket_create_pair)
RETURN_FALSE; RETURN_FALSE;
} }
fds_array_zval = zend_try_array_init(fds_array_zval); fds_array_zval = zend_try_array_init_size(fds_array_zval, 2);
if (!fds_array_zval) { if (!fds_array_zval) {
zval_ptr_dtor(&retval[0]); zval_ptr_dtor(&retval[0]);
zval_ptr_dtor(&retval[1]); zval_ptr_dtor(&retval[1]);
@ -2776,6 +2777,7 @@ PHP_FUNCTION(socket_addrinfo_lookup)
} }
array_init(return_value); array_init(return_value);
zend_hash_real_init_packed(Z_ARRVAL_P(return_value));
for (rp = result; rp != NULL; rp = rp->ai_next) { for (rp = result; rp != NULL; rp = rp->ai_next) {
if (rp->ai_family != AF_UNSPEC) { if (rp->ai_family != AF_UNSPEC) {