process_{tree,blob}: Remove useless xstrdup calls
authorBjörn Steinbrink <B.Steinbrink@gmx.de>
Wed, 8 Apr 2009 11:28:54 +0000 (13:28 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 9 Apr 2009 05:58:43 +0000 (22:58 -0700)
The name of the processed object was duplicated for passing it to
add_object(), but that already calls path_name, which allocates a new
string anyway. So the memory allocated by the xstrdup calls just went
nowhere, leaking memory.

This reduces the RSS usage for a "rev-list --all --objects" by about 10% on
the gentoo repo (fully packed) as well as linux-2.6.git:

gentoo:
| old | new
----------------|-------------------------------
RSS | 1537284 | 1388408
VSZ | 1816852 | 1667952
time elapsed | 1:49.62 | 1:48.99
min. page faults| 417178 | 379919

linux-2.6.git:
| old | new
----------------|-------------------------------
RSS | 324452 | 292996
VSZ | 491792 | 460376
time elapsed | 0:14.53 | 0:14.28
min. page faults| 89360 | 81613

Signed-off-by: Björn Steinbrink <B.Steinbrink@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
list-objects.c
reachable.c
index c8b8375e4983794e601ba69a1c217a3c711835e9..dd243c7c662c2f3fe9463b616bb00bed2cc503a7 100644 (file)
@@ -23,7 +23,6 @@ static void process_blob(struct rev_info *revs,
        if (obj->flags & (UNINTERESTING | SEEN))
                return;
        obj->flags |= SEEN;
-       name = xstrdup(name);
        add_object(obj, p, path, name);
 }
 
@@ -78,7 +77,6 @@ static void process_tree(struct rev_info *revs,
        if (parse_tree(tree) < 0)
                die("bad tree object %s", sha1_to_hex(obj->sha1));
        obj->flags |= SEEN;
-       name = xstrdup(name);
        add_object(obj, p, path, name);
        me.up = path;
        me.elem = name;
index 3b1c18ff9b9060d0dd437ce89aedb8871c66c54c..b515fa2de332cc570a8a32861bd8d6491b61133e 100644 (file)
@@ -48,7 +48,6 @@ static void process_tree(struct tree *tree,
        obj->flags |= SEEN;
        if (parse_tree(tree) < 0)
                die("bad tree object %s", sha1_to_hex(obj->sha1));
-       name = xstrdup(name);
        add_object(obj, p, path, name);
        me.up = path;
        me.elem = name;