pack: make packed_git_mru global a value instead of a pointer

The MRU cache that keeps track of recently used packs is represented
using two global variables:

	struct mru packed_git_mru_storage;
	struct mru *packed_git_mru = &packed_git_mru_storage;

Callers never assign to the packed_git_mru pointer, though, so we can
simplify by eliminating it and using &packed_git_mru_storage (renamed
to &packed_git_mru) directly.  This variable is only used by the
packfile subsystem, making this a relatively uninvasive change (and
any new unadapted callers would trigger a compile error).

Noticed while moving these globals to the object_store struct.

Signed-off-by: Stefan Beller <sbeller@google.com>
Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
Acked-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jonathan Nieder 2017-09-12 10:28:39 -07:00 committed by Junio C Hamano
parent 6867272d5b
commit 607bd8315c
3 changed files with 9 additions and 11 deletions

View File

@ -1012,7 +1012,7 @@ static int want_object_in_pack(const unsigned char *sha1,
return want; return want;
} }
for (entry = packed_git_mru->head; entry; entry = entry->next) { for (entry = packed_git_mru.head; entry; entry = entry->next) {
struct packed_git *p = entry->item; struct packed_git *p = entry->item;
off_t offset; off_t offset;
@ -1030,7 +1030,7 @@ static int want_object_in_pack(const unsigned char *sha1,
} }
want = want_found_object(exclude, p); want = want_found_object(exclude, p);
if (!exclude && want > 0) if (!exclude && want > 0)
mru_mark(packed_git_mru, entry); mru_mark(&packed_git_mru, entry);
if (want != -1) if (want != -1)
return want; return want;
} }

View File

@ -4,6 +4,7 @@
#include "git-compat-util.h" #include "git-compat-util.h"
#include "strbuf.h" #include "strbuf.h"
#include "hashmap.h" #include "hashmap.h"
#include "mru.h"
#include "advice.h" #include "advice.h"
#include "gettext.h" #include "gettext.h"
#include "convert.h" #include "convert.h"
@ -1589,8 +1590,7 @@ extern struct packed_git {
* A most-recently-used ordered version of the packed_git list, which can * A most-recently-used ordered version of the packed_git list, which can
* be iterated instead of packed_git (and marked via mru_mark). * be iterated instead of packed_git (and marked via mru_mark).
*/ */
struct mru; extern struct mru packed_git_mru;
extern struct mru *packed_git_mru;
struct pack_entry { struct pack_entry {
off_t offset; off_t offset;

View File

@ -40,9 +40,7 @@ static unsigned int pack_max_fds;
static size_t peak_pack_mapped; static size_t peak_pack_mapped;
static size_t pack_mapped; static size_t pack_mapped;
struct packed_git *packed_git; struct packed_git *packed_git;
struct mru packed_git_mru;
static struct mru packed_git_mru_storage;
struct mru *packed_git_mru = &packed_git_mru_storage;
#define SZ_FMT PRIuMAX #define SZ_FMT PRIuMAX
static inline uintmax_t sz_fmt(size_t s) { return s; } static inline uintmax_t sz_fmt(size_t s) { return s; }
@ -861,9 +859,9 @@ static void prepare_packed_git_mru(void)
{ {
struct packed_git *p; struct packed_git *p;
mru_clear(packed_git_mru); mru_clear(&packed_git_mru);
for (p = packed_git; p; p = p->next) for (p = packed_git; p; p = p->next)
mru_append(packed_git_mru, p); mru_append(&packed_git_mru, p);
} }
static int prepare_packed_git_run_once = 0; static int prepare_packed_git_run_once = 0;
@ -1832,9 +1830,9 @@ int find_pack_entry(const unsigned char *sha1, struct pack_entry *e)
if (!packed_git) if (!packed_git)
return 0; return 0;
for (p = packed_git_mru->head; p; p = p->next) { for (p = packed_git_mru.head; p; p = p->next) {
if (fill_pack_entry(sha1, e, p->item)) { if (fill_pack_entry(sha1, e, p->item)) {
mru_mark(packed_git_mru, p); mru_mark(&packed_git_mru, p);
return 1; return 1;
} }
} }