hashmap: introduce hash_ops to make struct Hashmap smaller

It is redundant to store 'hash' and 'compare' function pointers in
struct Hashmap separately. The functions always comprise a pair.
Store a single pointer to struct hash_ops instead.

systemd keeps hundreds of hashmaps, so this saves a little bit of
memory.
This commit is contained in:
Michal Schmidt
2014-09-15 16:08:50 +02:00
parent f44541bc93
commit d5099efc47
82 changed files with 278 additions and 226 deletions
+3 -3
View File
@@ -165,7 +165,7 @@ static void load_unix_sockets(void) {
/* We maintain a cache of the sockets we found in
* /proc/net/unix to speed things up a little. */
unix_sockets = set_new(string_hash_func, string_compare_func);
unix_sockets = set_new(&string_hash_ops);
if (!unix_sockets)
return;
@@ -1608,8 +1608,8 @@ int main(int argc, char *argv[]) {
label_init(NULL);
items = hashmap_new(string_hash_func, string_compare_func);
globs = hashmap_new(string_hash_func, string_compare_func);
items = hashmap_new(&string_hash_ops);
globs = hashmap_new(&string_hash_ops);
if (!items || !globs) {
r = log_oom();