Merge branch 'tr/grep-threading'
* tr/grep-threading: grep: disable threading in non-worktree case grep: enable threading with -p and -W using lazy attribute lookup grep: load funcname patterns for -W
This commit is contained in:
@ -17,7 +17,6 @@
|
||||
#include "grep.h"
|
||||
#include "quote.h"
|
||||
#include "dir.h"
|
||||
#include "thread-utils.h"
|
||||
|
||||
static char const * const grep_usage[] = {
|
||||
"git grep [options] [-e] <pattern> [<rev>...] [[--] <path>...]",
|
||||
@ -256,6 +255,7 @@ static void start_threads(struct grep_opt *opt)
|
||||
|
||||
pthread_mutex_init(&grep_mutex, NULL);
|
||||
pthread_mutex_init(&read_sha1_mutex, NULL);
|
||||
pthread_mutex_init(&grep_attr_mutex, NULL);
|
||||
pthread_cond_init(&cond_add, NULL);
|
||||
pthread_cond_init(&cond_write, NULL);
|
||||
pthread_cond_init(&cond_result, NULL);
|
||||
@ -303,6 +303,7 @@ static int wait_all(void)
|
||||
|
||||
pthread_mutex_destroy(&grep_mutex);
|
||||
pthread_mutex_destroy(&read_sha1_mutex);
|
||||
pthread_mutex_destroy(&grep_attr_mutex);
|
||||
pthread_cond_destroy(&cond_add);
|
||||
pthread_cond_destroy(&cond_write);
|
||||
pthread_cond_destroy(&cond_result);
|
||||
@ -1001,20 +1002,6 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
|
||||
if (!opt.fixed && opt.ignore_case)
|
||||
opt.regflags |= REG_ICASE;
|
||||
|
||||
#ifndef NO_PTHREADS
|
||||
if (online_cpus() == 1 || !grep_threads_ok(&opt))
|
||||
use_threads = 0;
|
||||
|
||||
if (use_threads) {
|
||||
if (opt.pre_context || opt.post_context || opt.file_break ||
|
||||
opt.funcbody)
|
||||
skip_first_line = 1;
|
||||
start_threads(&opt);
|
||||
}
|
||||
#else
|
||||
use_threads = 0;
|
||||
#endif
|
||||
|
||||
compile_grep_patterns(&opt);
|
||||
|
||||
/* Check revs and then paths */
|
||||
@ -1036,6 +1023,24 @@ int cmd_grep(int argc, const char **argv, const char *prefix)
|
||||
break;
|
||||
}
|
||||
|
||||
#ifndef NO_PTHREADS
|
||||
if (list.nr || cached || online_cpus() == 1)
|
||||
use_threads = 0;
|
||||
#else
|
||||
use_threads = 0;
|
||||
#endif
|
||||
|
||||
opt.use_threads = use_threads;
|
||||
|
||||
#ifndef NO_PTHREADS
|
||||
if (use_threads) {
|
||||
if (opt.pre_context || opt.post_context || opt.file_break ||
|
||||
opt.funcbody)
|
||||
skip_first_line = 1;
|
||||
start_threads(&opt);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* The rest are paths */
|
||||
if (!seen_dashdash) {
|
||||
int j;
|
||||
|
Reference in New Issue
Block a user