]> granicus.if.org Git - php/commitdiff
Last set of zend_hash_init() optimizations
authorIlia Alshanetsky <iliaa@php.net>
Tue, 3 Oct 2006 19:51:01 +0000 (19:51 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 3 Oct 2006 19:51:01 +0000 (19:51 +0000)
ext/soap/php_schema.c
ext/soap/soap.c
ext/sockets/sockets.c
main/streams/filter.c
main/streams/streams.c

index 9040eec57d3db0bebe734852d35edb09fa84349f..896ea6313ade1205c8715a675927785ec5a20abc 100644 (file)
@@ -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;
                                                        }
index c17f9aefb42139017b7d15e1da0e18b6cc102285..dcaa51683c11c6b3eb8433cf31b1ad741e71d52a 100644 (file)
@@ -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);
index f76139e0fe546a1f39331ffc5d156762a6c81799..db08598cbc1ea5908cc56b8ada4ee3c4fd645fe6 100644 (file)
@@ -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))) {
index 2b9c8ed8191bd55626451e7596c02abcc1f94c9c..079767d30c35d4bcdac265f389dc9d03b68a4180 100644 (file)
@@ -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));
        }
 
index 55b0485ea34d0be16b59a60731fc084f71f30203..efd40c4493d6138f97a4060f407f1469ebe41ec4 100755 (executable)
@@ -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));
 }