Browse Source

read-cache.c: reduce branching based on HAVE_THREADS

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
Nguyễn Thái Ngọc Duy 6 years ago committed by Junio C Hamano
parent
commit
88168b9b43
  1. 19
      read-cache.c

19
read-cache.c

@ -2172,7 +2172,6 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)


src_offset = sizeof(*hdr); src_offset = sizeof(*hdr);


if (HAVE_THREADS) {
nr_threads = git_config_get_index_threads(); nr_threads = git_config_get_index_threads();


/* TODO: does creating more threads than cores help? */ /* TODO: does creating more threads than cores help? */
@ -2183,6 +2182,9 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
nr_threads = cpus; nr_threads = cpus;
} }


if (!HAVE_THREADS)
nr_threads = 1;

if (nr_threads > 1) { if (nr_threads > 1) {
extension_offset = read_eoie_extension(mmap, mmap_size); extension_offset = read_eoie_extension(mmap, mmap_size);
if (extension_offset) { if (extension_offset) {
@ -2210,20 +2212,16 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
} else { } else {
src_offset += load_all_cache_entries(istate, mmap, mmap_size, src_offset); src_offset += load_all_cache_entries(istate, mmap, mmap_size, src_offset);
} }
} else {
src_offset += load_all_cache_entries(istate, mmap, mmap_size, src_offset);
}


istate->timestamp.sec = st.st_mtime; istate->timestamp.sec = st.st_mtime;
istate->timestamp.nsec = ST_MTIME_NSEC(st); istate->timestamp.nsec = ST_MTIME_NSEC(st);


/* if we created a thread, join it otherwise load the extensions on the primary thread */ /* if we created a thread, join it otherwise load the extensions on the primary thread */
if (HAVE_THREADS && extension_offset) { if (extension_offset) {
int ret = pthread_join(p.pthread, NULL); int ret = pthread_join(p.pthread, NULL);
if (ret) if (ret)
die(_("unable to join load_index_extensions thread: %s"), strerror(ret)); die(_("unable to join load_index_extensions thread: %s"), strerror(ret));
} } else {
if (!extension_offset) {
p.src_offset = src_offset; p.src_offset = src_offset;
load_index_extensions(&p); load_index_extensions(&p);
} }
@ -2745,8 +2743,10 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
if (ce_write(&c, newfd, &hdr, sizeof(hdr)) < 0) if (ce_write(&c, newfd, &hdr, sizeof(hdr)) < 0)
return -1; return -1;


if (HAVE_THREADS) { if (HAVE_THREADS)
nr_threads = git_config_get_index_threads(); nr_threads = git_config_get_index_threads();
else
nr_threads = 1;


if (nr_threads != 1) { if (nr_threads != 1) {
int ieot_blocks, cpus; int ieot_blocks, cpus;
@ -2777,7 +2777,6 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
ieot_entries = DIV_ROUND_UP(entries, ieot_blocks); ieot_entries = DIV_ROUND_UP(entries, ieot_blocks);
} }
} }
}


offset = lseek(newfd, 0, SEEK_CUR); offset = lseek(newfd, 0, SEEK_CUR);
if (offset < 0) { if (offset < 0) {
@ -2861,7 +2860,7 @@ static int do_write_index(struct index_state *istate, struct tempfile *tempfile,
* strip_extensions parameter as we need it when loading the shared * strip_extensions parameter as we need it when loading the shared
* index. * index.
*/ */
if (HAVE_THREADS && ieot) { if (ieot) {
struct strbuf sb = STRBUF_INIT; struct strbuf sb = STRBUF_INIT;


write_ieot_extension(&sb, ieot); write_ieot_extension(&sb, ieot);

Loading…
Cancel
Save