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

Re: ce_stage(..) == 2?

From
Junio C Hamano <gitster@pobox.com>
Date
Feb 15, 2010, 06:53 UTC
Message-ID
<7vbpfrhtw1.fsf@alter.siamese.dyndns.org>
In-Reply-To
<4B78EE4B.2040707@gmail.com>
cg <chengang31@gmail.com> writes:
Show 14 quoted lines
> I  saw some code like:
> attr.c(365): if (ce_stage(istate->cache[i]) == 2)
> ...
> rerere.c(352):  if (ce_stage(e2) == 2
> ...
>
> but there is no 0x200 in cache.h(158):
> #define CE_NAMEMASK  (0x0fff)
> #define CE_STAGEMASK (0x3000)
> #define CE_EXTENDED  (0x4000)
> #define CE_VALID     (0x8000)
> #define CE_STAGESHIFT 12
>
> so what does "2" mean?
#define ce_stage(ce) ((CE_STAGEMASK & (ce)->ce_flags) >> CE_STAGESHIFT)

0x3000 shifted 12 places is a mask for two bits, as you can have cache entries at stage 0 (normal), or stage 1/2/3.

Previous: cg
Message 2 of 2 in “ce_stage(..) == 2?”
  1. cgFeb 15, 2010
  2. Junio C HamanoFeb 15, 2010

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.