зеркало из https://github.com/microsoft/git.git
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>
This commit is contained in:
Родитель
62e5ee81a3
Коммит
88168b9b43
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);
|
||||
|
||||
if (HAVE_THREADS) {
|
||||
nr_threads = git_config_get_index_threads();
|
||||
|
||||
/* 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;
|
||||
}
|
||||
|
||||
if (!HAVE_THREADS)
|
||||
nr_threads = 1;
|
||||
|
||||
if (nr_threads > 1) {
|
||||
extension_offset = read_eoie_extension(mmap, mmap_size);
|
||||
if (extension_offset) {
|
||||
|
@ -2210,20 +2212,16 @@ int do_read_index(struct index_state *istate, const char *path, int must_exist)
|
|||
} else {
|
||||
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.nsec = ST_MTIME_NSEC(st);
|
||||
|
||||
/* 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);
|
||||
if (ret)
|
||||
die(_("unable to join load_index_extensions thread: %s"), strerror(ret));
|
||||
}
|
||||
if (!extension_offset) {
|
||||
} else {
|
||||
p.src_offset = src_offset;
|
||||
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)
|
||||
return -1;
|
||||
|
||||
if (HAVE_THREADS) {
|
||||
if (HAVE_THREADS)
|
||||
nr_threads = git_config_get_index_threads();
|
||||
else
|
||||
nr_threads = 1;
|
||||
|
||||
if (nr_threads != 1) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
offset = lseek(newfd, 0, SEEK_CUR);
|
||||
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
|
||||
* index.
|
||||
*/
|
||||
if (HAVE_THREADS && ieot) {
|
||||
if (ieot) {
|
||||
struct strbuf sb = STRBUF_INIT;
|
||||
|
||||
write_ieot_extension(&sb, ieot);
|
||||
|
|
Загрузка…
Ссылка в новой задаче