[Mesa-dev] [PATCH] glsl: replace old hash table with new and faster one

Timothy Arceri t_arceri at yahoo.com.au
Sun Aug 2 16:18:25 PDT 2015


On Sun, 2015-08-02 at 19:50 +0200, Alejandro SeguĂ­ wrote:

Maybe just for completeness you could add this to the commit message

The util/hash_table was intended to be a fast hash table
replacement for the program/hash_table see 35fd61bd99c1 and 72e55bb6888ff.

> ---
>  src/glsl/ir_print_visitor.cpp | 19 ++++++++++++-------
>  1 file changed, 12 insertions(+), 7 deletions(-)
> 
> diff --git a/src/glsl/ir_print_visitor.cpp b/src/glsl/ir_print_visitor.cpp
> index 78475f3..641a996 100644
> --- a/src/glsl/ir_print_visitor.cpp
> +++ b/src/glsl/ir_print_visitor.cpp
> @@ -25,7 +25,7 @@
>  #include "glsl_types.h"
>  #include "glsl_parser_extras.h"
>  #include "main/macros.h"
> -#include "program/hash_table.h"
> +#include "util/hash_table.h"
>  
>  static void print_type(FILE *f, const glsl_type *t);
>  
> @@ -89,14 +89,14 @@ ir_print_visitor::ir_print_visitor(FILE *f)
>  {
>     indentation = 0;
>     printable_names =
> -      hash_table_ctor(32, hash_table_pointer_hash, 
> hash_table_pointer_compare);
> +      _mesa_hash_table_create(NULL, _mesa_hash_pointer, 
> _mesa_key_pointer_equal);
>     symbols = _mesa_symbol_table_ctor();
>     mem_ctx = ralloc_context(NULL);
>  }
>  
>  ir_print_visitor::~ir_print_visitor()
>  {
> -   hash_table_dtor(printable_names);
> +   _mesa_hash_table_destroy(printable_names, NULL);
>     _mesa_symbol_table_dtor(symbols);
>     ralloc_free(mem_ctx);
>  }
> @@ -121,9 +121,14 @@ ir_print_visitor::unique_name(ir_variable *var)
>     }
>  
>     /* Do we already have a name for this variable? */
> -   const char *name = (const char *) hash_table_find(this->printable_names, 
> var);
> -   if (name != NULL)
> -      return name;
> +   struct hash_entry * entry =
> +   	   _mesa_hash_table_search(this->printable_names, var);
> +
> +   if (entry != NULL) {
> +      return (const char *) entry->data;
> +   }
> +
> +   const char* name = NULL;

The above looks a bit funny just floating here maybe move it

>  
>     /* If there's no conflict, just use the original name */
Here.
>     if (_mesa_symbol_table_find_symbol(this->symbols, -1, var->name) == 
> NULL) {
> @@ -132,7 +137,7 @@ ir_print_visitor::unique_name(ir_variable *var)
>        static unsigned i = 1;
>        name = ralloc_asprintf(this->mem_ctx, "%s@%u", var->name, ++i);
>     }
> -   hash_table_insert(this->printable_names, (void *) name, var);
> +   _mesa_hash_table_insert(this->printable_names, var, (void *) name);
>     _mesa_symbol_table_add_symbol(this->symbols, -1, name, var);
>     return name;
>  }

With those couple of small changes you can add to the commit message
Reviewed-by: Timothy Arceri <t_arceri at yahoo.com.au>



More information about the mesa-dev mailing list