glsl: replace old hash table with new and faster one
The util/hash_table was intended to be a fast hash table replacement for the program/hash_table see35fd61bd99
and72e55bb688
. Reviewed-by: Timothy Arceri <t_arceri@yahoo.com.au>
This commit is contained in:

committed by
Timothy Arceri

parent
7ac946e546
commit
e23cbaadaa
@@ -25,7 +25,7 @@
|
|||||||
#include "glsl_types.h"
|
#include "glsl_types.h"
|
||||||
#include "glsl_parser_extras.h"
|
#include "glsl_parser_extras.h"
|
||||||
#include "main/macros.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);
|
static void print_type(FILE *f, const glsl_type *t);
|
||||||
|
|
||||||
@@ -89,14 +89,14 @@ ir_print_visitor::ir_print_visitor(FILE *f)
|
|||||||
{
|
{
|
||||||
indentation = 0;
|
indentation = 0;
|
||||||
printable_names =
|
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();
|
symbols = _mesa_symbol_table_ctor();
|
||||||
mem_ctx = ralloc_context(NULL);
|
mem_ctx = ralloc_context(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
ir_print_visitor::~ir_print_visitor()
|
ir_print_visitor::~ir_print_visitor()
|
||||||
{
|
{
|
||||||
hash_table_dtor(printable_names);
|
_mesa_hash_table_destroy(printable_names, NULL);
|
||||||
_mesa_symbol_table_dtor(symbols);
|
_mesa_symbol_table_dtor(symbols);
|
||||||
ralloc_free(mem_ctx);
|
ralloc_free(mem_ctx);
|
||||||
}
|
}
|
||||||
@@ -121,18 +121,22 @@ ir_print_visitor::unique_name(ir_variable *var)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Do we already have a name for this variable? */
|
/* Do we already have a name for this variable? */
|
||||||
const char *name = (const char *) hash_table_find(this->printable_names, var);
|
struct hash_entry * entry =
|
||||||
if (name != NULL)
|
_mesa_hash_table_search(this->printable_names, var);
|
||||||
return name;
|
|
||||||
|
if (entry != NULL) {
|
||||||
|
return (const char *) entry->data;
|
||||||
|
}
|
||||||
|
|
||||||
/* If there's no conflict, just use the original name */
|
/* If there's no conflict, just use the original name */
|
||||||
|
const char* name = NULL;
|
||||||
if (_mesa_symbol_table_find_symbol(this->symbols, -1, var->name) == NULL) {
|
if (_mesa_symbol_table_find_symbol(this->symbols, -1, var->name) == NULL) {
|
||||||
name = var->name;
|
name = var->name;
|
||||||
} else {
|
} else {
|
||||||
static unsigned i = 1;
|
static unsigned i = 1;
|
||||||
name = ralloc_asprintf(this->mem_ctx, "%s@%u", var->name, ++i);
|
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);
|
_mesa_symbol_table_add_symbol(this->symbols, -1, name, var);
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user