From: Ilia Alshanetsky Date: Tue, 3 Oct 2006 19:51:01 +0000 (+0000) Subject: Last set of zend_hash_init() optimizations X-Git-Tag: php-5.2.0RC5~28 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=557838efa45f2b23ce2a17b5b54c2e8d22f1336d;p=php Last set of zend_hash_init() optimizations --- diff --git a/ext/soap/php_schema.c b/ext/soap/php_schema.c index 9040eec57d..896ea6313a 100644 --- a/ext/soap/php_schema.c +++ b/ext/soap/php_schema.c @@ -2039,7 +2039,7 @@ static void schema_attribute_fixup(sdlCtx *ctx, sdlAttributePtr attr) xmlNodePtr node; attr->extraAttributes = emalloc(sizeof(HashTable)); - zend_hash_init(attr->extraAttributes, 0, NULL, delete_extra_attribute, 0); + zend_hash_init(attr->extraAttributes, zend_hash_num_elements((*tmp)->extraAttributes), NULL, delete_extra_attribute, 0); zend_hash_copy(attr->extraAttributes, (*tmp)->extraAttributes, copy_extra_attribute, &node, sizeof(xmlNodePtr)); } attr->encode = (*tmp)->encode; @@ -2085,7 +2085,7 @@ static void schema_attributegroup_fixup(sdlCtx *ctx, sdlAttributePtr attr, HashT if (newAttr->extraAttributes) { xmlNodePtr node; HashTable *ht = emalloc(sizeof(HashTable)); - zend_hash_init(ht, 0, NULL, delete_extra_attribute, 0); + zend_hash_init(ht, zend_hash_num_elements(newAttr->extraAttributes), NULL, delete_extra_attribute, 0); zend_hash_copy(ht, newAttr->extraAttributes, copy_extra_attribute, &node, sizeof(xmlNodePtr)); newAttr->extraAttributes = ht; } diff --git a/ext/soap/soap.c b/ext/soap/soap.c index c17f9aefb4..dcaa51683c 100644 --- a/ext/soap/soap.c +++ b/ext/soap/soap.c @@ -1078,7 +1078,7 @@ PHP_METHOD(SoapServer, SoapServer) zval *ztmp; ALLOC_HASHTABLE(service->class_map); - zend_hash_init(service->class_map, 0, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(service->class_map, zend_hash_num_elements((*tmp)->value.ht), NULL, ZVAL_PTR_DTOR, 0); zend_hash_copy(service->class_map, (*tmp)->value.ht, (copy_ctor_func_t) zval_add_ref, (void *) &ztmp, sizeof(zval *)); } @@ -1323,7 +1323,7 @@ PHP_METHOD(SoapServer, addFunction) if (service->soap_functions.ft == NULL) { service->soap_functions.functions_all = FALSE; service->soap_functions.ft = emalloc(sizeof(HashTable)); - zend_hash_init(service->soap_functions.ft, 0, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(service->soap_functions.ft, zend_hash_num_elements(Z_ARRVAL_P(function_name)), NULL, ZVAL_PTR_DTOR, 0); } zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(function_name), &pos); diff --git a/ext/sockets/sockets.c b/ext/sockets/sockets.c index f76139e0fe..db08598cbc 100644 --- a/ext/sockets/sockets.c +++ b/ext/sockets/sockets.c @@ -568,7 +568,7 @@ static int php_sock_array_from_fd_set(zval *sock_array, fd_set *fds TSRMLS_DC) if (Z_TYPE_P(sock_array) != IS_ARRAY) return 0; ALLOC_HASHTABLE(new_hash); - zend_hash_init(new_hash, 0, NULL, ZVAL_PTR_DTOR, 0); + zend_hash_init(new_hash, zend_hash_num_elements(Z_ARRVAL_P(sock_array)), NULL, ZVAL_PTR_DTOR, 0); for (zend_hash_internal_pointer_reset(Z_ARRVAL_P(sock_array)); zend_hash_get_current_data(Z_ARRVAL_P(sock_array), (void **) &element) == SUCCESS; zend_hash_move_forward(Z_ARRVAL_P(sock_array))) { diff --git a/main/streams/filter.c b/main/streams/filter.c index 2b9c8ed819..079767d30c 100644 --- a/main/streams/filter.c +++ b/main/streams/filter.c @@ -61,7 +61,7 @@ PHPAPI int php_stream_filter_register_factory_volatile(const char *filterpattern php_stream_filter_factory tmpfactory; ALLOC_HASHTABLE(FG(stream_filters)); - zend_hash_init(FG(stream_filters), 0, NULL, NULL, 1); + zend_hash_init(FG(stream_filters), zend_hash_num_elements(&stream_filters_hash), NULL, NULL, 1); zend_hash_copy(FG(stream_filters), &stream_filters_hash, NULL, &tmpfactory, sizeof(php_stream_filter_factory)); } diff --git a/main/streams/streams.c b/main/streams/streams.c index 55b0485ea3..efd40c4493 100755 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1462,7 +1462,7 @@ static void clone_wrapper_hash(TSRMLS_D) php_stream_wrapper *tmp; ALLOC_HASHTABLE(FG(stream_wrappers)); - zend_hash_init(FG(stream_wrappers), 0, NULL, NULL, 1); + zend_hash_init(FG(stream_wrappers), zend_hash_num_elements(&url_stream_wrappers_hash), NULL, NULL, 1); zend_hash_copy(FG(stream_wrappers), &url_stream_wrappers_hash, NULL, &tmp, sizeof(tmp)); }