summaryrefslogtreecommitdiffstats
path: root/src/glsl/ir_validate.cpp
diff options
context:
space:
mode:
authorTimothy Arceri <t_arceri@yahoo.com.au>2015-07-08 21:26:02 +1000
committerTimothy Arceri <t_arceri@yahoo.com.au>2015-07-11 10:25:32 +1000
commit0fae4e451bc60de1138729d20e03100e93cc6f38 (patch)
treea19d0c83d699ecfe142d0c2f9f3f90c57804ac49 /src/glsl/ir_validate.cpp
parent75784243df1f5bb0652fb243b37d69f36d493a86 (diff)
downloadexternal_mesa3d-0fae4e451bc60de1138729d20e03100e93cc6f38.zip
external_mesa3d-0fae4e451bc60de1138729d20e03100e93cc6f38.tar.gz
external_mesa3d-0fae4e451bc60de1138729d20e03100e93cc6f38.tar.bz2
glsl: use set rather than old hash table for ir_validate
When the new hash table implementation was added to Mesa it claimed to be much faster, see commits 35fd61bd99c1 and 72e55bb6888ff. The set implementation follows the same implementation strategy so this should be faster and there was no need to store a data field. Reviewed-by: Iago Toral Quiroga <itoral@igalia.com>
Diffstat (limited to 'src/glsl/ir_validate.cpp')
-rw-r--r--src/glsl/ir_validate.cpp24
1 files changed, 12 insertions, 12 deletions
diff --git a/src/glsl/ir_validate.cpp b/src/glsl/ir_validate.cpp
index cfe0df3..684bef2 100644
--- a/src/glsl/ir_validate.cpp
+++ b/src/glsl/ir_validate.cpp
@@ -35,7 +35,8 @@
#include "ir.h"
#include "ir_hierarchical_visitor.h"
-#include "program/hash_table.h"
+#include "util/hash_table.h"
+#include "util/set.h"
#include "glsl_types.h"
namespace {
@@ -44,18 +45,18 @@ class ir_validate : public ir_hierarchical_visitor {
public:
ir_validate()
{
- this->ht = hash_table_ctor(0, hash_table_pointer_hash,
- hash_table_pointer_compare);
+ this->ir_set = _mesa_set_create(NULL, _mesa_hash_pointer,
+ _mesa_key_pointer_equal);
this->current_function = NULL;
this->callback_enter = ir_validate::validate_ir;
- this->data_enter = ht;
+ this->data_enter = ir_set;
}
~ir_validate()
{
- hash_table_dtor(this->ht);
+ _mesa_set_destroy(this->ir_set, NULL);
}
virtual ir_visitor_status visit(ir_variable *v);
@@ -80,7 +81,7 @@ public:
ir_function *current_function;
- struct hash_table *ht;
+ struct set *ir_set;
};
} /* anonymous namespace */
@@ -94,7 +95,7 @@ ir_validate::visit(ir_dereference_variable *ir)
abort();
}
- if (hash_table_find(ht, ir->var) == NULL) {
+ if (_mesa_set_search(ir_set, ir->var) == NULL) {
printf("ir_dereference_variable @ %p specifies undeclared variable "
"`%s' @ %p\n",
(void *) ir, ir->var->name, (void *) ir->var);
@@ -730,8 +731,7 @@ ir_validate::visit(ir_variable *ir)
if (ir->name && ir->is_name_ralloced())
assert(ralloc_parent(ir->name) == ir);
- hash_table_insert(ht, ir, ir);
-
+ _mesa_set_add(ir_set, ir);
/* If a variable is an array, verify that the maximum array index is in
* bounds. There was once an error in AST-to-HIR conversion that set this
@@ -885,15 +885,15 @@ dump_ir:
void
ir_validate::validate_ir(ir_instruction *ir, void *data)
{
- struct hash_table *ht = (struct hash_table *) data;
+ struct set *ir_set = (struct set *) data;
- if (hash_table_find(ht, ir)) {
+ if (_mesa_set_search(ir_set, ir)) {
printf("Instruction node present twice in ir tree:\n");
ir->print();
printf("\n");
abort();
}
- hash_table_insert(ht, ir, ir);
+ _mesa_set_add(ir_set, ir);
}
void