git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH 6/9] grep: cache userdiff_driver in grep_source

From
Jeff King <peff@peff.net>
Date
Feb 2, 2012, 19:37 UTC
Message-ID
<20120202193756.GA9246@sigill.intra.peff.net>
In-Reply-To
<7v4nv9xexs.fsf@alter.siamese.dyndns.org>
On Thu, Feb 02, 2012 at 10:34:07AM -0800, Junio C Hamano wrote:
Show 14 quoted lines
> Jeff King <peff@peff.net> writes:
> 
> > -		grep_attr_lock();
> > -		drv = userdiff_find_by_path(gs->name);
> > -		grep_attr_unlock();
> > -		if (drv && drv->funcname.pattern) {
> > -			const struct userdiff_funcname *pe = &drv->funcname;
> > +		grep_source_load_driver(gs);
> > +		if (gs->driver->funcname.pattern) {
> > +			const struct userdiff_funcname *pe = &gs->driver->funcname;
> 
> When we load driver, gs->driver gets at least "default" driver, so we no
> longer need to check for drv != NULL as we used to?  Is that the reason
> for the slight difference here?
Yes, exactly.

We could just leave gs->driver NULL instead of looking up "default", and then use NULL to signal to the calling code that defaults should be used. But NULL is interpreted by grep_source_load_driver as "we did not look up the driver yet", so the common case of "no driver" would mean we accidentally do the lookup multiple times. The diff_filespec code uses the same convention to solve the same problem.

Speaking of which, there was some notion in my mind that a "grep_source" and a "diff_filespec" were very similar objects, and that we could possibly unify the implementations. I decided against that route with this series, as it would have involved pretty heavy refactoring of the diff code to prevent a fairly small amount of code duplication.

-Peff
Previous: Junio C HamanoNext: Pete Wyckoff
Message 41 of 43 in “git-grep while excluding files in a blacklist”
  1. Dov GrobgeldJan 17, 2012
  2. Nguyen Thai Ngoc DuyJan 17, 2012
  3. Junio C HamanoJan 17, 2012
  4. Nguyen Thai Ngoc DuyJan 18, 2012
  5. Don't search files with an unset "grep" attributeconrad.irwin@gmail.com, Jan 23, 2012
  6. Junio C HamanoJan 23, 2012
  7. Don't search files with an unset "grep" attributeConrad Irwin, Jan 23, 2012
  8. Junio C HamanoJan 24, 2012
  9. Jeff KingJan 25, 2012
  10. Stephen BashJan 26, 2012
  11. Michael HaggertyJan 26, 2012
  12. Jeff KingJan 26, 2012
  13. Jeff KingJan 27, 2012
  14. Junio C HamanoFeb 1, 2012
  15. Jeff KingFeb 1, 2012
  16. Jeff KingFeb 1, 2012
  17. Conrad IrwinFeb 1, 2012
  18. Junio C HamanoFeb 1, 2012
  19. Jeff KingFeb 1, 2012
  20. Jeff KingFeb 1, 2012
  21. 1/2 grep: let grep_buffer callers specify a binary flagJeff King, Feb 1, 2012
  22. 2/2 grep: respect diff attributes for binary-nessJeff King, Feb 1, 2012
  23. Junio C HamanoFeb 2, 2012
  24. Jeff KingFeb 2, 2012
  25. Junio C HamanoFeb 2, 2012
  26. 0/9 respect binary attribute in grepJeff King, Feb 2, 2012
  27. 1/9 grep: make locking flag globalJeff King, Feb 2, 2012
  28. 2/9 grep: move sha1-reading mutex into low-level codeJeff King, Feb 2, 2012
  29. 3/9 grep: refactor the concept of "grep source" into an objectJeff King, Feb 2, 2012
  30. 4/9 convert git-grep to use grep_source interfaceJeff King, Feb 2, 2012
  31. 5/9 grep: drop grep_buffer's "name" parameterJeff King, Feb 2, 2012
  32. 6/9 grep: cache userdiff_driver in grep_sourceJeff King, Feb 2, 2012
  33. 7/9 grep: respect diff attributes for binary-nessJeff King, Feb 2, 2012
  34. 8/9 grep: load file data after checking binary-nessJeff King, Feb 2, 2012
  35. 9/9 grep: pre-load userdiff drivers when threadedJeff King, Feb 2, 2012
  36. Jeff KingFeb 2, 2012
  37. Thomas RastFeb 2, 2012
  38. Jeff KingFeb 2, 2012
  39. Junio C HamanoFeb 2, 2012
  40. Junio C HamanoFeb 2, 2012
  41. Jeff KingFeb 2, 2012
  42. Pete WyckoffFeb 4, 2012
  43. Jeff KingFeb 4, 2012

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.