mesa: Use the new hash table for the variable refcount visitor.
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> [jordan.l.justen@intel.com: open_hash_table => hash_table] Signed-off-by: Jordan Justen <jordan.l.justen@intel.com> Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
committed by
Jordan Justen
parent
59284bc44a
commit
1ddc021b2a
@@ -33,7 +33,26 @@
|
||||
#include "ir_visitor.h"
|
||||
#include "ir_variable_refcount.h"
|
||||
#include "glsl_types.h"
|
||||
#include "main/hash_table.h"
|
||||
|
||||
ir_variable_refcount_visitor::ir_variable_refcount_visitor()
|
||||
{
|
||||
this->mem_ctx = ralloc_context(NULL);
|
||||
this->ht = _mesa_hash_table_create(NULL, _mesa_key_pointer_equal);
|
||||
}
|
||||
|
||||
static void
|
||||
free_entry(struct hash_entry *entry)
|
||||
{
|
||||
ir_variable_refcount_entry *ivre = (ir_variable_refcount_entry *) entry->data;
|
||||
delete ivre;
|
||||
}
|
||||
|
||||
ir_variable_refcount_visitor::~ir_variable_refcount_visitor()
|
||||
{
|
||||
ralloc_free(this->mem_ctx);
|
||||
_mesa_hash_table_destroy(this->ht, free_entry);
|
||||
}
|
||||
|
||||
// constructor
|
||||
ir_variable_refcount_entry::ir_variable_refcount_entry(ir_variable *var)
|
||||
@@ -50,15 +69,17 @@ ir_variable_refcount_entry *
|
||||
ir_variable_refcount_visitor::get_variable_entry(ir_variable *var)
|
||||
{
|
||||
assert(var);
|
||||
foreach_iter(exec_list_iterator, iter, this->variable_list) {
|
||||
ir_variable_refcount_entry *entry = (ir_variable_refcount_entry *)iter.get();
|
||||
if (entry->var == var)
|
||||
return entry;
|
||||
}
|
||||
|
||||
ir_variable_refcount_entry *entry = new(mem_ctx) ir_variable_refcount_entry(var);
|
||||
struct hash_entry *e = _mesa_hash_table_search(this->ht,
|
||||
_mesa_hash_pointer(var),
|
||||
var);
|
||||
if (e)
|
||||
return (ir_variable_refcount_entry *)e->data;
|
||||
|
||||
ir_variable_refcount_entry *entry = new ir_variable_refcount_entry(var);
|
||||
assert(entry->referenced_count == 0);
|
||||
this->variable_list.push_tail(entry);
|
||||
_mesa_hash_table_insert(this->ht, _mesa_hash_pointer(var), var, entry);
|
||||
|
||||
return entry;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user