@matheusbsbs / matheus-bagliano / commits / a5031214c4
Fork 0

slim down "git show-index"

As the documentation says, this is primarily for debugging, and in the longer term we should rename it to test-show-index or something. In the meantime, just avoid xmalloc (which slurps in the rest of git), and separating out the trivial hex functions into "hex.o". This results in [torvalds@nehalem git]$ size git-show-index text data bss dec hex filename 222818 2276 112688 337782 52776 git-show-index (before) 5696 624 1264 7584 1da0 git-show-index (after) which is a whole lot better. Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Linus Torvalds committed Jan 21, 2010 at 15:25 UTC a5031214c4fe5f5d3fcf649d10769744cbc66fed
4 files changed +69 -67
Makefile
+1
@@ -559,6 +559,7 @@ LIB_OBJS += graph.o
559 LIB_OBJS += grep.o
560 LIB_OBJS += hash.o
561 LIB_OBJS += help.o
562 +LIB_OBJS += hex.o
563 LIB_OBJS += ident.o
564 LIB_OBJS += levenshtein.o
565 LIB_OBJS += list-objects.o
hex.c new
+67
@@ -0,0 +1,67 @@
1 +#include "cache.h"
2 +
3 +const signed char hexval_table[256] = {
4 + -1, -1, -1, -1, -1, -1, -1, -1, /* 00-07 */
5 + -1, -1, -1, -1, -1, -1, -1, -1, /* 08-0f */
6 + -1, -1, -1, -1, -1, -1, -1, -1, /* 10-17 */
7 + -1, -1, -1, -1, -1, -1, -1, -1, /* 18-1f */
8 + -1, -1, -1, -1, -1, -1, -1, -1, /* 20-27 */
9 + -1, -1, -1, -1, -1, -1, -1, -1, /* 28-2f */
10 + 0, 1, 2, 3, 4, 5, 6, 7, /* 30-37 */
11 + 8, 9, -1, -1, -1, -1, -1, -1, /* 38-3f */
12 + -1, 10, 11, 12, 13, 14, 15, -1, /* 40-47 */
13 + -1, -1, -1, -1, -1, -1, -1, -1, /* 48-4f */
14 + -1, -1, -1, -1, -1, -1, -1, -1, /* 50-57 */
15 + -1, -1, -1, -1, -1, -1, -1, -1, /* 58-5f */
16 + -1, 10, 11, 12, 13, 14, 15, -1, /* 60-67 */
17 + -1, -1, -1, -1, -1, -1, -1, -1, /* 68-67 */
18 + -1, -1, -1, -1, -1, -1, -1, -1, /* 70-77 */
19 + -1, -1, -1, -1, -1, -1, -1, -1, /* 78-7f */
20 + -1, -1, -1, -1, -1, -1, -1, -1, /* 80-87 */
21 + -1, -1, -1, -1, -1, -1, -1, -1, /* 88-8f */
22 + -1, -1, -1, -1, -1, -1, -1, -1, /* 90-97 */
23 + -1, -1, -1, -1, -1, -1, -1, -1, /* 98-9f */
24 + -1, -1, -1, -1, -1, -1, -1, -1, /* a0-a7 */
25 + -1, -1, -1, -1, -1, -1, -1, -1, /* a8-af */
26 + -1, -1, -1, -1, -1, -1, -1, -1, /* b0-b7 */
27 + -1, -1, -1, -1, -1, -1, -1, -1, /* b8-bf */
28 + -1, -1, -1, -1, -1, -1, -1, -1, /* c0-c7 */
29 + -1, -1, -1, -1, -1, -1, -1, -1, /* c8-cf */
30 + -1, -1, -1, -1, -1, -1, -1, -1, /* d0-d7 */
31 + -1, -1, -1, -1, -1, -1, -1, -1, /* d8-df */
32 + -1, -1, -1, -1, -1, -1, -1, -1, /* e0-e7 */
33 + -1, -1, -1, -1, -1, -1, -1, -1, /* e8-ef */
34 + -1, -1, -1, -1, -1, -1, -1, -1, /* f0-f7 */
35 + -1, -1, -1, -1, -1, -1, -1, -1, /* f8-ff */
36 +};
37 +
38 +int get_sha1_hex(const char *hex, unsigned char *sha1)
39 +{
40 + int i;
41 + for (i = 0; i < 20; i++) {
42 + unsigned int val = (hexval(hex[0]) << 4) | hexval(hex[1]);
43 + if (val & ~0xff)
44 + return -1;
45 + *sha1++ = val;
46 + hex += 2;
47 + }
48 + return 0;
49 +}
50 +
51 +char *sha1_to_hex(const unsigned char *sha1)
52 +{
53 + static int bufno;
54 + static char hexbuffer[4][50];
55 + static const char hex[] = "0123456789abcdef";
56 + char *buffer = hexbuffer[3 & ++bufno], *buf = buffer;
57 + int i;
58 +
59 + for (i = 0; i < 20; i++) {
60 + unsigned int val = *sha1++;
61 + *buf++ = hex[val >> 4];
62 + *buf++ = hex[val & 0xf];
63 + }
64 + *buf = '\0';
65 +
66 + return buffer;
67 +}
sha1_file.c
-66
@@ -35,54 +35,6 @@ static size_t sz_fmt(size_t s) { return s; }
35
36 const unsigned char null_sha1[20];
37
38 -const signed char hexval_table[256] = {
39 - -1, -1, -1, -1, -1, -1, -1, -1, /* 00-07 */
40 - -1, -1, -1, -1, -1, -1, -1, -1, /* 08-0f */
41 - -1, -1, -1, -1, -1, -1, -1, -1, /* 10-17 */
42 - -1, -1, -1, -1, -1, -1, -1, -1, /* 18-1f */
43 - -1, -1, -1, -1, -1, -1, -1, -1, /* 20-27 */
44 - -1, -1, -1, -1, -1, -1, -1, -1, /* 28-2f */
45 - 0, 1, 2, 3, 4, 5, 6, 7, /* 30-37 */
46 - 8, 9, -1, -1, -1, -1, -1, -1, /* 38-3f */
47 - -1, 10, 11, 12, 13, 14, 15, -1, /* 40-47 */
48 - -1, -1, -1, -1, -1, -1, -1, -1, /* 48-4f */
49 - -1, -1, -1, -1, -1, -1, -1, -1, /* 50-57 */
50 - -1, -1, -1, -1, -1, -1, -1, -1, /* 58-5f */
51 - -1, 10, 11, 12, 13, 14, 15, -1, /* 60-67 */
52 - -1, -1, -1, -1, -1, -1, -1, -1, /* 68-67 */
53 - -1, -1, -1, -1, -1, -1, -1, -1, /* 70-77 */
54 - -1, -1, -1, -1, -1, -1, -1, -1, /* 78-7f */
55 - -1, -1, -1, -1, -1, -1, -1, -1, /* 80-87 */
56 - -1, -1, -1, -1, -1, -1, -1, -1, /* 88-8f */
57 - -1, -1, -1, -1, -1, -1, -1, -1, /* 90-97 */
58 - -1, -1, -1, -1, -1, -1, -1, -1, /* 98-9f */
59 - -1, -1, -1, -1, -1, -1, -1, -1, /* a0-a7 */
60 - -1, -1, -1, -1, -1, -1, -1, -1, /* a8-af */
61 - -1, -1, -1, -1, -1, -1, -1, -1, /* b0-b7 */
62 - -1, -1, -1, -1, -1, -1, -1, -1, /* b8-bf */
63 - -1, -1, -1, -1, -1, -1, -1, -1, /* c0-c7 */
64 - -1, -1, -1, -1, -1, -1, -1, -1, /* c8-cf */
65 - -1, -1, -1, -1, -1, -1, -1, -1, /* d0-d7 */
66 - -1, -1, -1, -1, -1, -1, -1, -1, /* d8-df */
67 - -1, -1, -1, -1, -1, -1, -1, -1, /* e0-e7 */
68 - -1, -1, -1, -1, -1, -1, -1, -1, /* e8-ef */
69 - -1, -1, -1, -1, -1, -1, -1, -1, /* f0-f7 */
70 - -1, -1, -1, -1, -1, -1, -1, -1, /* f8-ff */
71 -};
72 -
73 -int get_sha1_hex(const char *hex, unsigned char *sha1)
74 -{
75 - int i;
76 - for (i = 0; i < 20; i++) {
77 - unsigned int val = (hexval(hex[0]) << 4) | hexval(hex[1]);
78 - if (val & ~0xff)
79 - return -1;
80 - *sha1++ = val;
81 - hex += 2;
82 - }
83 - return 0;
84 -}
85 -
38 static inline int offset_1st_component(const char *path)
39 {
40 if (has_dos_drive_prefix(path))
@@ -133,24 +85,6 @@ int safe_create_leading_directories_const(const char *path)
85 return result;
86 }
87
136 -char *sha1_to_hex(const unsigned char *sha1)
137 -{
138 - static int bufno;
139 - static char hexbuffer[4][50];
140 - static const char hex[] = "0123456789abcdef";
141 - char *buffer = hexbuffer[3 & ++bufno], *buf = buffer;
142 - int i;
143 -
144 - for (i = 0; i < 20; i++) {
145 - unsigned int val = *sha1++;
146 - *buf++ = hex[val >> 4];
147 - *buf++ = hex[val & 0xf];
148 - }
149 - *buf = '\0';
150 -
151 - return buffer;
152 -}
153 -
88 static void fill_sha1_path(char *pathbuf, const unsigned char *sha1)
89 {
90 int i;
show-index.c
+1 -1
@@ -48,7 +48,7 @@ int main(int argc, char **argv)
48 unsigned char sha1[20];
49 uint32_t crc;
50 uint32_t off;
51 - } *entries = xmalloc(nr * sizeof(entries[0]));
51 + } *entries = malloc(nr * sizeof(entries[0]));
52 for (i = 0; i < nr; i++)
53 if (fread(entries[i].sha1, 20, 1, stdin) != 1)
54 die("unable to read sha1 %u/%u", i, nr);