[Mesa-dev] [PATCH 07/23] glsl: Convert ir_clone to the util hash table
Thomas Helland
thomashelland90 at gmail.com
Tue Aug 16 20:10:20 UTC 2016
Signed-off-by: Thomas Helland <thomashelland90 at gmail.com>
---
src/compiler/glsl/ir_clone.cpp | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/src/compiler/glsl/ir_clone.cpp b/src/compiler/glsl/ir_clone.cpp
index ef2c4c3..b1e5ea8 100644
--- a/src/compiler/glsl/ir_clone.cpp
+++ b/src/compiler/glsl/ir_clone.cpp
@@ -25,7 +25,7 @@
#include "main/compiler.h"
#include "ir.h"
#include "compiler/glsl_types.h"
-#include "program/hash_table.h"
+#include "util/hash_table.h"
ir_rvalue *
ir_rvalue::clone(void *mem_ctx, struct hash_table *) const
@@ -68,9 +68,8 @@ ir_variable::clone(void *mem_ctx, struct hash_table *ht) const
var->interface_type = this->interface_type;
- if (ht) {
- hash_table_insert(ht, var, (void *)const_cast<ir_variable *>(this));
- }
+ if (ht)
+ _mesa_hash_table_insert(ht, (void *)const_cast<ir_variable *>(this), var);
return var;
}
@@ -175,9 +174,8 @@ ir_dereference_variable::clone(void *mem_ctx, struct hash_table *ht) const
ir_variable *new_var;
if (ht) {
- new_var = (ir_variable *)hash_table_find(ht, this->var);
- if (!new_var)
- new_var = this->var;
+ hash_entry *entry = _mesa_hash_table_search(ht, this->var);
+ new_var = entry ? (ir_variable *) entry->data : this->var;
} else {
new_var = this->var;
}
@@ -281,8 +279,8 @@ ir_function::clone(void *mem_ctx, struct hash_table *ht) const
copy->add_signature(sig_copy);
if (ht != NULL)
- hash_table_insert(ht, sig_copy,
- (void *)const_cast<ir_function_signature *>(sig));
+ _mesa_hash_table_insert(ht,
+ (void *)const_cast<ir_function_signature *>(sig), sig_copy);
}
return copy;
@@ -394,10 +392,13 @@ public:
/* Try to find the function signature referenced by the ir_call in the
* table. If it is found, replace it with the value from the table.
*/
- ir_function_signature *sig =
- (ir_function_signature *) hash_table_find(this->ht, ir->callee);
- if (sig != NULL)
- ir->callee = sig;
+ ir_function_signature *sig;
+ hash_entry *entry = _mesa_hash_table_search(this->ht, ir->callee);
+
+ if (entry != NULL) {
+ sig = (ir_function_signature *) entry->data;
+ ir->callee = sig;
+ }
/* Since this may be used before function call parameters are flattened,
* the children also need to be processed.
@@ -422,7 +423,7 @@ void
clone_ir_list(void *mem_ctx, exec_list *out, const exec_list *in)
{
struct hash_table *ht =
- hash_table_ctor(0, hash_table_pointer_hash, hash_table_pointer_compare);
+ _mesa_hash_table_create(NULL, _mesa_hash_pointer, _mesa_key_pointer_equal);
foreach_in_list(const ir_instruction, original, in) {
ir_instruction *copy = original->clone(mem_ctx, ht);
@@ -437,5 +438,5 @@ clone_ir_list(void *mem_ctx, exec_list *out, const exec_list *in)
*/
fixup_function_calls(ht, out);
- hash_table_dtor(ht);
+ _mesa_hash_table_destroy(ht, NULL);
}
--
2.9.2
More information about the mesa-dev
mailing list