[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