diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2007-04-16 22:10:19 -0700 |
---|---|---|
committer | Junio C Hamano <junkio@cox.net> | 2007-04-16 23:36:11 -0700 |
commit | 2c1cbec1e2f0bd7b15fe5e921d287babfd91c7d3 (patch) | |
tree | ee149f21b7fe1a53ced6a4051e10268608d14d54 /object.c | |
parent | f948792990f82a35bf0c98510e7511ef8acb9cd3 (diff) | |
download | git-2c1cbec1e2f0bd7b15fe5e921d287babfd91c7d3.tar.gz |
Use proper object allocators for unknown object nodes too
We used to use a different allocator scheme for when we didn't know the
object type. That meant that objects that were created without any
up-front knowledge of the type would not go through the same allocation
paths as normal object allocations, and would miss out on the statistics.
But perhaps more importantly than the statistics (that are useful when
looking at memory usage but not much else), if we want to make the
object hash tables use a denser object pointer representation, we need
to make sure that they all go through the same blocking allocator.
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'object.c')
-rw-r--r-- | object.c | 15 |
1 files changed, 3 insertions, 12 deletions
@@ -120,22 +120,13 @@ void created_object(const unsigned char *sha1, struct object *obj) nr_objs++; } -union any_object { - struct object object; - struct commit commit; - struct tree tree; - struct blob blob; - struct tag tag; -}; - struct object *lookup_unknown_object(const unsigned char *sha1) { struct object *obj = lookup_object(sha1); if (!obj) { - union any_object *ret = xcalloc(1, sizeof(*ret)); - created_object(sha1, &ret->object); - ret->object.type = OBJ_NONE; - return &ret->object; + obj = alloc_object_node(); + created_object(sha1, obj); + obj->type = OBJ_NONE; } return obj; } |