Move "void *util" from "struct object" into "struct commit"

Every single user actually wanted this only for commit objects, and we
have no reason to waste space on it for other object types. So just move
the structure member from the low-level "struct object" into the "struct
commit".

This leaves the commit object the same size, and removes one unnecessary
pointer from all other object allocations.

This shrinks memory usage (still at a fairly hefty half-gig, admittedly)
of "git-rev-list --all --objects" on the mozilla repo by another 5% in my
tests.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
6 files changed
tree: 3784f041b9ceb25a8092b85f1d86119da7bc5a45
  1. arm/
  2. compat/
  3. contrib/
  4. Documentation/
  5. gitweb/
  6. mozilla-sha1/
  7. ppc/
  8. t/
  9. templates/
  10. xdiff/
  11. .gitignore
  12. base85.c
  13. blame.c
  14. blob.c
  15. blob.h
  16. builtin-add.c
  17. builtin-apply.c
  18. builtin-cat-file.c
  19. builtin-check-ref-format.c
  20. builtin-commit-tree.c
  21. builtin-count.c
  22. builtin-diff-files.c
  23. builtin-diff-index.c
  24. builtin-diff-stages.c
  25. builtin-diff-tree.c
  26. builtin-diff.c
  27. builtin-grep.c
  28. builtin-help.c
  29. builtin-init-db.c
  30. builtin-log.c
  31. builtin-ls-files.c
  32. builtin-ls-tree.c
  33. builtin-push.c
  34. builtin-read-tree.c
  35. builtin-rev-list.c
  36. builtin-rev-parse.c
  37. builtin-rm.c
  38. builtin-show-branch.c
  39. builtin-tar-tree.c
  40. builtin-upload-tar.c
  41. builtin.h
  42. cache-tree.c
  43. cache-tree.h
  44. cache.h
  45. checkout-index.c
  46. clone-pack.c
  47. combine-diff.c
  48. commit.c
  49. commit.h
  50. config.c
  51. connect.c
  52. convert-objects.c
  53. copy.c
  54. COPYING
  55. csum-file.c
  56. csum-file.h
  57. ctype.c
  58. daemon.c
  59. date.c
  60. delta.h
  61. describe.c
  62. diff-delta.c
  63. diff-lib.c
  64. diff.c
  65. diff.h
  66. diffcore-break.c
  67. diffcore-delta.c
  68. diffcore-order.c
  69. diffcore-pickaxe.c
  70. diffcore-rename.c
  71. diffcore.h
  72. dir.c
  73. dir.h
  74. dump-cache-tree.c
  75. entry.c
  76. environment.c
  77. exec_cmd.c
  78. exec_cmd.h
  79. fetch-clone.c
  80. fetch-pack.c
  81. fetch.c
  82. fetch.h
  83. fsck-objects.c
  84. generate-cmdlist.sh
  85. git-am.sh
  86. git-annotate.perl
  87. git-applymbox.sh
  88. git-applypatch.sh
  89. git-archimport.perl
  90. git-bisect.sh
  91. git-branch.sh
  92. git-checkout.sh
  93. git-cherry.sh
  94. git-clean.sh
  95. git-clone.sh
  96. git-commit.sh
  97. git-compat-util.h
  98. git-cvsexportcommit.perl
  99. git-cvsimport.perl
  100. git-cvsserver.perl
  101. git-fetch.sh
  102. git-fmt-merge-msg.perl
  103. git-lost-found.sh
  104. git-ls-remote.sh
  105. git-merge-octopus.sh
  106. git-merge-one-file.sh
  107. git-merge-ours.sh
  108. git-merge-recursive.py
  109. git-merge-resolve.sh
  110. git-merge-stupid.sh
  111. git-merge.sh
  112. git-mv.perl
  113. git-p4import.py
  114. git-parse-remote.sh
  115. git-prune.sh
  116. git-pull.sh
  117. git-push.sh
  118. git-quiltimport.sh
  119. git-rebase.sh
  120. git-relink.perl
  121. git-repack.sh
  122. git-request-pull.sh
  123. git-rerere.perl
  124. git-reset.sh
  125. git-resolve.sh
  126. git-revert.sh
  127. git-send-email.perl
  128. git-sh-setup.sh
  129. git-shortlog.perl
  130. git-svnimport.perl
  131. git-tag.sh
  132. git-verify-tag.sh
  133. GIT-VERSION-GEN
  134. git.c
  135. git.spec.in
  136. gitk
  137. gitMergeCommon.py
  138. hash-object.c
  139. http-fetch.c
  140. http-push.c
  141. http.c
  142. http.h
  143. ident.c
  144. imap-send.c
  145. index-pack.c
  146. INSTALL
  147. local-fetch.c
  148. lockfile.c
  149. log-tree.c
  150. log-tree.h
  151. mailinfo.c
  152. mailsplit.c
  153. Makefile
  154. merge-base.c
  155. merge-index.c
  156. merge-tree.c
  157. mktag.c
  158. mktree.c
  159. name-rev.c
  160. object.c
  161. object.h
  162. pack-check.c
  163. pack-objects.c
  164. pack-redundant.c
  165. pack.h
  166. pager.c
  167. patch-delta.c
  168. patch-id.c
  169. path.c
  170. peek-remote.c
  171. pkt-line.c
  172. pkt-line.h
  173. prune-packed.c
  174. quote.c
  175. quote.h
  176. read-cache.c
  177. README
  178. receive-pack.c
  179. refs.c
  180. refs.h
  181. repo-config.c
  182. revision.c
  183. revision.h
  184. rsh.c
  185. rsh.h
  186. run-command.c
  187. run-command.h
  188. send-pack.c
  189. server-info.c
  190. setup.c
  191. sha1_file.c
  192. sha1_name.c
  193. shell.c
  194. show-index.c
  195. ssh-fetch.c
  196. ssh-pull.c
  197. ssh-push.c
  198. ssh-upload.c
  199. strbuf.c
  200. strbuf.h
  201. stripspace.c
  202. symbolic-ref.c
  203. tag.c
  204. tag.h
  205. tar.h
  206. test-date.c
  207. test-delta.c
  208. tree-diff.c
  209. tree-walk.c
  210. tree-walk.h
  211. tree.c
  212. tree.h
  213. unpack-file.c
  214. unpack-objects.c
  215. update-index.c
  216. update-ref.c
  217. update-server-info.c
  218. upload-pack.c
  219. usage.c
  220. var.c
  221. verify-pack.c
  222. write-tree.c
  223. xdiff-interface.c
  224. xdiff-interface.h