summaryrefslogtreecommitdiff
path: root/packfile.c
diff options
context:
space:
mode:
authorGargi Sharma <gs051095@gmail.com>2018-01-23 23:46:51 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-01-24 17:52:16 (GMT)
commitec2dd32c705f43ef133a54cee99426c44eb3ab88 (patch)
tree31dbbe1fe450167adf4575f1128f3e01de7da26d /packfile.c
parent8865859dfc346c61f0e75fa429c5d307bd27368c (diff)
downloadgit-ec2dd32c705f43ef133a54cee99426c44eb3ab88.zip
git-ec2dd32c705f43ef133a54cee99426c44eb3ab88.tar.gz
git-ec2dd32c705f43ef133a54cee99426c44eb3ab88.tar.bz2
mru: Replace mru.[ch] with list.h implementation
Replace the custom calls to mru.[ch] with calls to list.h. This patch is the final step in removing the mru API completely and inlining the logic. This patch leads to significant code reduction and the mru API hence, is not a useful abstraction anymore. Signed-off-by: Gargi Sharma <gs051095@gmail.com> Reviewed-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'packfile.c')
-rw-r--r--packfile.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/packfile.c b/packfile.c
index 502d915..8d3bd5f 100644
--- a/packfile.c
+++ b/packfile.c
@@ -1,5 +1,5 @@
#include "cache.h"
-#include "mru.h"
+#include "list.h"
#include "pack.h"
#include "dir.h"
#include "mergesort.h"
@@ -40,7 +40,7 @@ static unsigned int pack_max_fds;
static size_t peak_pack_mapped;
static size_t pack_mapped;
struct packed_git *packed_git;
-struct mru packed_git_mru = {{&packed_git_mru.list, &packed_git_mru.list}};
+LIST_HEAD(packed_git_mru);
#define SZ_FMT PRIuMAX
static inline uintmax_t sz_fmt(size_t s) { return s; }
@@ -859,9 +859,10 @@ static void prepare_packed_git_mru(void)
{
struct packed_git *p;
- mru_clear(&packed_git_mru);
+ INIT_LIST_HEAD(&packed_git_mru);
+
for (p = packed_git; p; p = p->next)
- mru_append(&packed_git_mru, p);
+ list_add_tail(&p->mru, &packed_git_mru);
}
static int prepare_packed_git_run_once = 0;
@@ -1830,10 +1831,10 @@ int find_pack_entry(const unsigned char *sha1, struct pack_entry *e)
if (!packed_git)
return 0;
- list_for_each(pos, &packed_git_mru.list) {
- struct mru *p = list_entry(pos, struct mru, list);
- if (fill_pack_entry(sha1, e, p->item)) {
- mru_mark(&packed_git_mru, p);
+ list_for_each(pos, &packed_git_mru) {
+ struct packed_git *p = list_entry(pos, struct packed_git, mru);
+ if (fill_pack_entry(sha1, e, p)) {
+ list_move(&p->mru, &packed_git_mru);
return 1;
}
}