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
+2 -2
View File
@@ -473,7 +473,7 @@ static int add_connection_socket(Context *context, int fd) {
return 0;
}
r = set_ensure_allocated(&context->connections, trivial_hash_func, trivial_compare_func);
r = set_ensure_allocated(&context->connections, NULL);
if (r < 0) {
log_oom();
return 0;
@@ -543,7 +543,7 @@ static int add_listen_socket(Context *context, int fd) {
assert(context);
assert(fd >= 0);
r = set_ensure_allocated(&context->listen, trivial_hash_func, trivial_compare_func);
r = set_ensure_allocated(&context->listen, NULL);
if (r < 0) {
log_oom();
return r;