diff --git a/qom/object.c b/qom/object.c index b82b65a3a1..dfdc5c8e42 100644 --- a/qom/object.c +++ b/qom/object.c @@ -76,28 +76,19 @@ struct TypeImpl static Type type_interface; -static GHashTable *type_table_get(void) -{ - static GHashTable *type_table; - - if (type_table == NULL) { - type_table = g_hash_table_new(g_str_hash, g_str_equal); - } - - return type_table; -} +static GHashTable *type_table; static bool enumerating_types; static void type_table_add(TypeImpl *ti) { assert(!enumerating_types); - g_hash_table_insert(type_table_get(), (void *)ti->name, ti); + g_hash_table_insert(type_table, (void *)ti->name, ti); } static TypeImpl *type_table_lookup(const char *name) { - return g_hash_table_lookup(type_table_get(), name); + return g_hash_table_lookup(type_table, name); } static TypeImpl *type_new(const TypeInfo *info) @@ -1069,7 +1060,7 @@ void object_class_foreach(void (*fn)(ObjectClass *klass, void *opaque), OCFData data = { fn, implements_type, include_abstract, opaque }; enumerating_types = true; - g_hash_table_foreach(type_table_get(), object_class_foreach_tramp, &data); + g_hash_table_foreach(type_table, object_class_foreach_tramp, &data); enumerating_types = false; } @@ -2859,6 +2850,7 @@ static void __attribute__((constructor)) register_types(void) .abstract = true, }; + type_table = g_hash_table_new(g_str_hash, g_str_equal); type_interface = type_register_internal(&interface_info); type_register_internal(&object_info); }