зеркало из https://github.com/microsoft/git.git
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:
Родитель
6867272d5b
Коммит
607bd8315c
|
@ -1012,7 +1012,7 @@ static int want_object_in_pack(const unsigned char *sha1,
|
|||
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;
|
||||
off_t offset;
|
||||
|
||||
|
@ -1030,7 +1030,7 @@ static int want_object_in_pack(const unsigned char *sha1,
|
|||
}
|
||||
want = want_found_object(exclude, p);
|
||||
if (!exclude && want > 0)
|
||||
mru_mark(packed_git_mru, entry);
|
||||
mru_mark(&packed_git_mru, entry);
|
||||
if (want != -1)
|
||||
return want;
|
||||
}
|
||||
|
|
4
cache.h
4
cache.h
|
@ -4,6 +4,7 @@
|
|||
#include "git-compat-util.h"
|
||||
#include "strbuf.h"
|
||||
#include "hashmap.h"
|
||||
#include "mru.h"
|
||||
#include "advice.h"
|
||||
#include "gettext.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
|
||||
* 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 {
|
||||
off_t offset;
|
||||
|
|
12
packfile.c
12
packfile.c
|
@ -40,9 +40,7 @@ static unsigned int pack_max_fds;
|
|||
static size_t peak_pack_mapped;
|
||||
static size_t pack_mapped;
|
||||
struct packed_git *packed_git;
|
||||
|
||||
static struct mru packed_git_mru_storage;
|
||||
struct mru *packed_git_mru = &packed_git_mru_storage;
|
||||
struct mru packed_git_mru;
|
||||
|
||||
#define SZ_FMT PRIuMAX
|
||||
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;
|
||||
|
||||
mru_clear(packed_git_mru);
|
||||
mru_clear(&packed_git_mru);
|
||||
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;
|
||||
|
@ -1832,9 +1830,9 @@ int find_pack_entry(const unsigned char *sha1, struct pack_entry *e)
|
|||
if (!packed_git)
|
||||
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)) {
|
||||
mru_mark(packed_git_mru, p);
|
||||
mru_mark(&packed_git_mru, p);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче