aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/auxiliary/cso_cache
diff options
context:
space:
mode:
authorMarek Olšák <[email protected]>2020-01-21 21:47:47 -0500
committerMarek Olšák <[email protected]>2020-02-14 18:16:28 -0500
commite0bb7b87e26d6618d75d37a4fe2c4a271d075dbb (patch)
tree8e4d1c559dbfde469d730e0dd47aa95fd5c50a01 /src/gallium/auxiliary/cso_cache
parent789ed29d59b9c7c8cbef371311bfb3c507ae725a (diff)
gallium/cso_hash: cosmetic changes, no behavior changes
Reviewed-by: Pierre-Eric Pelloux-Prayer <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3829>
Diffstat (limited to 'src/gallium/auxiliary/cso_cache')
-rw-r--r--src/gallium/auxiliary/cso_cache/cso_hash.c72
-rw-r--r--src/gallium/auxiliary/cso_cache/cso_hash.h28
2 files changed, 43 insertions, 57 deletions
diff --git a/src/gallium/auxiliary/cso_cache/cso_hash.c b/src/gallium/auxiliary/cso_cache/cso_hash.c
index e3495d5165a..e42f1feb9b5 100644
--- a/src/gallium/auxiliary/cso_cache/cso_hash.c
+++ b/src/gallium/auxiliary/cso_cache/cso_hash.c
@@ -73,22 +73,12 @@ static int countBits(int hint)
return numBits;
}
-static void *cso_data_allocate_node(struct cso_hash_data *hash)
-{
- return MALLOC(sizeof(struct cso_node));
-}
-
-static void cso_free_node(struct cso_node *node)
-{
- FREE(node);
-}
-
static struct cso_node *
cso_hash_create_node(struct cso_hash *hash,
- unsigned akey, void *avalue,
- struct cso_node **anextNode)
+ unsigned akey, void *avalue,
+ struct cso_node **anextNode)
{
- struct cso_node *node = cso_data_allocate_node(hash->data.d);
+ struct cso_node *node = MALLOC(sizeof(struct cso_node));
if (!node)
return NULL;
@@ -96,7 +86,7 @@ cso_hash_create_node(struct cso_hash *hash,
node->key = akey;
node->value = avalue;
- node->next = (struct cso_node*)(*anextNode);
+ node->next = *anextNode;
*anextNode = node;
++hash->data.d->size;
return node;
@@ -116,7 +106,7 @@ static void cso_data_rehash(struct cso_hash_data *hash, int hint)
}
if (hash->numBits != hint) {
- struct cso_node *e = (struct cso_node *)(hash);
+ struct cso_node *e = (struct cso_node *)hash;
struct cso_node **oldBuckets = hash->buckets;
int oldNumBuckets = hash->numBuckets;
int i = 0;
@@ -168,9 +158,10 @@ static void cso_data_has_shrunk(struct cso_hash_data *hash)
static struct cso_node *cso_data_first_node(struct cso_hash_data *hash)
{
- struct cso_node *e = (struct cso_node *)(hash);
+ struct cso_node *e = (struct cso_node *)hash;
struct cso_node **bucket = hash->buckets;
int n = hash->numBuckets;
+
while (n--) {
if (*bucket != e)
return *bucket;
@@ -180,23 +171,19 @@ static struct cso_node *cso_data_first_node(struct cso_hash_data *hash)
}
struct cso_hash_iter cso_hash_insert(struct cso_hash *hash,
- unsigned key, void *data)
+ unsigned key, void *data)
{
cso_data_might_grow(hash->data.d);
- {
- struct cso_node **nextNode = cso_hash_find_node(hash, key);
- struct cso_node *node = cso_hash_create_node(hash, key, data, nextNode);
- if (!node) {
- struct cso_hash_iter null_iter = {hash, 0};
- return null_iter;
- }
-
- {
- struct cso_hash_iter iter = {hash, node};
- return iter;
- }
+ struct cso_node **nextNode = cso_hash_find_node(hash, key);
+ struct cso_node *node = cso_hash_create_node(hash, key, data, nextNode);
+ if (!node) {
+ struct cso_hash_iter null_iter = {hash, 0};
+ return null_iter;
}
+
+ struct cso_hash_iter iter = {hash, node};
+ return iter;
}
bool cso_hash_init(struct cso_hash *hash)
@@ -216,14 +203,15 @@ bool cso_hash_init(struct cso_hash *hash)
void cso_hash_deinit(struct cso_hash *hash)
{
- struct cso_node *e_for_x = (struct cso_node *)(hash->data.d);
- struct cso_node **bucket = (struct cso_node **)(hash->data.d->buckets);
+ struct cso_node *e_for_x = (struct cso_node *)hash->data.d;
+ struct cso_node **bucket = hash->data.d->buckets;
int n = hash->data.d->numBuckets;
+
while (n--) {
struct cso_node *cur = *bucket++;
while (cur != e_for_x) {
struct cso_node *next = cur->next;
- cso_free_node(cur);
+ FREE(cur);
cur = next;
}
}
@@ -253,7 +241,7 @@ struct cso_node *cso_hash_data_next(struct cso_node *node)
a.next = node->next;
if (!a.next) {
debug_printf("iterating beyond the last element\n");
- return 0;
+ return NULL;
}
if (a.next->next)
return a.next;
@@ -307,26 +295,26 @@ static struct cso_node *cso_hash_data_prev(struct cso_node *node)
return a.e;
}
-void * cso_hash_take(struct cso_hash *hash,
- unsigned akey)
+void *cso_hash_take(struct cso_hash *hash, unsigned akey)
{
struct cso_node **node = cso_hash_find_node(hash, akey);
+
if (*node != hash->data.e) {
void *t = (*node)->value;
struct cso_node *next = (*node)->next;
- cso_free_node(*node);
+ FREE(*node);
*node = next;
--hash->data.d->size;
cso_data_has_shrunk(hash->data.d);
return t;
}
- return 0;
+ return NULL;
}
struct cso_hash_iter cso_hash_iter_prev(struct cso_hash_iter iter)
{
struct cso_hash_iter prev = {iter.hash,
- cso_hash_data_prev(iter.node)};
+ cso_hash_data_prev(iter.node)};
return prev;
}
@@ -351,17 +339,17 @@ struct cso_hash_iter cso_hash_erase(struct cso_hash *hash, struct cso_hash_iter
return iter;
ret = cso_hash_iter_next(ret);
- node_ptr = (struct cso_node**)(&hash->data.d->buckets[node->key % hash->data.d->numBuckets]);
+ node_ptr = &hash->data.d->buckets[node->key % hash->data.d->numBuckets];
while (*node_ptr != node)
node_ptr = &(*node_ptr)->next;
*node_ptr = node->next;
- cso_free_node(node);
+ FREE(node);
--hash->data.d->size;
return ret;
}
-boolean cso_hash_contains(struct cso_hash *hash, unsigned key)
+bool cso_hash_contains(struct cso_hash *hash, unsigned key)
{
struct cso_node **node = cso_hash_find_node(hash, key);
- return (*node != hash->data.e);
+ return *node != hash->data.e;
}
diff --git a/src/gallium/auxiliary/cso_cache/cso_hash.h b/src/gallium/auxiliary/cso_cache/cso_hash.h
index 182cef0a2af..23cf5c8254e 100644
--- a/src/gallium/auxiliary/cso_cache/cso_hash.h
+++ b/src/gallium/auxiliary/cso_cache/cso_hash.h
@@ -82,7 +82,7 @@ bool cso_hash_init(struct cso_hash *hash);
void cso_hash_deinit(struct cso_hash *hash);
-int cso_hash_size(struct cso_hash *hash);
+int cso_hash_size(struct cso_hash *hash);
/**
@@ -102,7 +102,7 @@ struct cso_hash_iter cso_hash_insert(struct cso_hash *hash, unsigned key,
*/
struct cso_hash_iter cso_hash_erase(struct cso_hash *hash, struct cso_hash_iter iter);
-void *cso_hash_take(struct cso_hash *hash, unsigned key);
+void *cso_hash_take(struct cso_hash *hash, unsigned key);
@@ -111,10 +111,10 @@ struct cso_hash_iter cso_hash_first_node(struct cso_hash *hash);
/**
* Returns true if a value with the given key exists in the hash
*/
-boolean cso_hash_contains(struct cso_hash *hash, unsigned key);
+bool cso_hash_contains(struct cso_hash *hash, unsigned key);
-unsigned cso_hash_iter_key(struct cso_hash_iter iter);
+unsigned cso_hash_iter_key(struct cso_hash_iter iter);
struct cso_hash_iter cso_hash_iter_prev(struct cso_hash_iter iter);
@@ -125,26 +125,24 @@ struct cso_hash_iter cso_hash_iter_prev(struct cso_hash_iter iter);
* comparison to see which entry in the list is a direct copy of our template
* and returns that entry.
*/
-void *cso_hash_find_data_from_template( struct cso_hash *hash,
- unsigned hash_key,
- void *templ,
- int size );
+void *cso_hash_find_data_from_template(struct cso_hash *hash,
+ unsigned hash_key,
+ void *templ,
+ int size);
struct cso_node *cso_hash_data_next(struct cso_node *node);
-static inline int
+static inline bool
cso_hash_iter_is_null(struct cso_hash_iter iter)
{
- if (!iter.node || iter.node == iter.hash->data.e)
- return 1;
- return 0;
+ return !iter.node || iter.node == iter.hash->data.e;
}
static inline void *
cso_hash_iter_data(struct cso_hash_iter iter)
{
if (!iter.node || iter.hash->data.e == iter.node)
- return 0;
+ return NULL;
return iter.node->value;
}
@@ -154,12 +152,12 @@ cso_hash_find_node(struct cso_hash *hash, unsigned akey)
struct cso_node **node;
if (hash->data.d->numBuckets) {
- node = (struct cso_node **)(&hash->data.d->buckets[akey % hash->data.d->numBuckets]);
+ node = &hash->data.d->buckets[akey % hash->data.d->numBuckets];
assert(*node == hash->data.e || (*node)->next);
while (*node != hash->data.e && (*node)->key != akey)
node = &(*node)->next;
} else {
- node = (struct cso_node **)((const struct cso_node * const *)(&hash->data.e));
+ node = &hash->data.e;
}
return node;
}