X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fcompiler%2Fglsl%2Fir_function_detect_recursion.cpp;h=5b05274d0015ac64efa8c4b2dc207265f996d6cc;hb=43d66c8c2d4d3d4dee1309856b6ce6c5393682e5;hp=b2334d2e403316a3cb0c6c820bb012abfc31160b;hpb=eb63640c1d38a200a7b1540405051d3ff79d0d8a;p=mesa.git diff --git a/src/compiler/glsl/ir_function_detect_recursion.cpp b/src/compiler/glsl/ir_function_detect_recursion.cpp index b2334d2e403..5b05274d001 100644 --- a/src/compiler/glsl/ir_function_detect_recursion.cpp +++ b/src/compiler/glsl/ir_function_detect_recursion.cpp @@ -120,11 +120,10 @@ * * \author Ian Romanick */ -#include "main/core.h" #include "ir.h" #include "glsl_parser_extras.h" #include "linker.h" -#include "program/hash_table.h" +#include "util/hash_table.h" #include "program.h" namespace { @@ -159,22 +158,25 @@ public: { progress = false; this->mem_ctx = ralloc_context(NULL); - this->function_hash = hash_table_ctor(0, hash_table_pointer_hash, - hash_table_pointer_compare); + this->function_hash = _mesa_hash_table_create(NULL, _mesa_hash_pointer, + _mesa_key_pointer_equal); } ~has_recursion_visitor() { - hash_table_dtor(this->function_hash); + _mesa_hash_table_destroy(this->function_hash, NULL); ralloc_free(this->mem_ctx); } function *get_function(ir_function_signature *sig) { - function *f = (function *) hash_table_find(this->function_hash, sig); - if (f == NULL) { - f = new(mem_ctx) function(sig); - hash_table_insert(this->function_hash, f, sig); + function *f; + hash_entry *entry = _mesa_hash_table_search(this->function_hash, sig); + if (entry == NULL) { + f = new(mem_ctx) function(sig); + _mesa_hash_table_insert(this->function_hash, sig, f); + } else { + f = (function *) entry->data; } return f; @@ -251,16 +253,17 @@ remove_unlinked_functions(const void *key, void *data, void *closure) if (f->callers.is_empty() || f->callees.is_empty()) { while (!f->callers.is_empty()) { - struct call_node *n = (struct call_node *) f->callers.pop_head(); - destroy_links(& n->func->callees, f); + struct call_node *n = (struct call_node *) f->callers.pop_head(); + destroy_links(& n->func->callees, f); } while (!f->callees.is_empty()) { - struct call_node *n = (struct call_node *) f->callees.pop_head(); - destroy_links(& n->func->callers, f); + struct call_node *n = (struct call_node *) f->callees.pop_head(); + destroy_links(& n->func->callers, f); } - hash_table_remove(visitor->function_hash, key); + hash_entry *entry = _mesa_hash_table_search(visitor->function_hash, key); + _mesa_hash_table_remove(visitor->function_hash, entry); visitor->progress = true; } }