[PATCH] bisect.c: make show_list() build again

2018-09-02 Thread Nguyễn Thái Ngọc Duy
This function only compiles when DEBUG_BISECT is 1, which is often not
the case. As a result there are two commits [1] [2] that break it but
the breakages went unnoticed because the code did not compile by
default. Update the function and include the new header file to make this
function build again.

In order to stop this from happening again, the function is now
compiled unconditionally but exits early unless DEBUG_BISECT is
non-zero. A smart compiler generates no extra code (not even a
function call). But even if it does not, this function does not seem
to be in a hot path that the extra cost becomes a big problem.

[1] bb408ac95d (bisect.c: use commit-slab for commit weight instead of
commit->util - 2018-05-19)

[2] cbd53a2193 (object-store: move object access functions to
object-store.h - 2018-05-15)

Signed-off-by: Nguyễn Thái Ngọc Duy 
---
 bisect.c | 10 +-
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/bisect.c b/bisect.c
index e1275ba79e..e65f6821b8 100644
--- a/bisect.c
+++ b/bisect.c
@@ -13,6 +13,7 @@
 #include "sha1-array.h"
 #include "argv-array.h"
 #include "commit-slab.h"
+#include "object-store.h"
 
 static struct oid_array good_revs;
 static struct oid_array skipped_revs;
@@ -120,14 +121,14 @@ static inline int halfway(struct commit_list *p, int nr)
}
 }
 
-#if !DEBUG_BISECT
-#define show_list(a,b,c,d) do { ; } while (0)
-#else
 static void show_list(const char *debug, int counted, int nr,
  struct commit_list *list)
 {
struct commit_list *p;
 
+   if (!DEBUG_BISECT)
+   return;
+
fprintf(stderr, "%s (%d/%d)\n", debug, counted, nr);
 
for (p = list; p; p = p->next) {
@@ -145,7 +146,7 @@ static void show_list(const char *debug, int counted, int 
nr,
(flags & TREESAME) ? ' ' : 'T',
(flags & UNINTERESTING) ? 'U' : ' ',
(flags & COUNTED) ? 'C' : ' ');
-   if (commit->util)
+   if (*commit_weight_at(&commit_weight, p->item))
fprintf(stderr, "%3d", weight(p));
else
fprintf(stderr, "---");
@@ -160,7 +161,6 @@ static void show_list(const char *debug, int counted, int 
nr,
fprintf(stderr, "\n");
}
 }
-#endif /* DEBUG_BISECT */
 
 static struct commit_list *best_bisection(struct commit_list *list, int nr)
 {
-- 
2.19.0.rc0.337.ge906d732e7



Re: [PATCH] bisect.c: make show_list() build again

2018-09-02 Thread Christian Couder
On Sun, Sep 2, 2018 at 9:42 AM, Nguyễn Thái Ngọc Duy  wrote:

> In order to stop this from happening again, the function is now
> compiled unconditionally but exits early unless DEBUG_BISECT is
> non-zero.

Thanks for going the extra mile and doing this!

I wonder if we should also try to make the show_list() function part
of the trace_*() functions to make it even more regular. This can be a
separate patch or topic though.


Re: [PATCH] bisect.c: make show_list() build again

2018-09-03 Thread Duy Nguyen
On Sun, Sep 2, 2018 at 9:57 AM Christian Couder
 wrote:
>
> On Sun, Sep 2, 2018 at 9:42 AM, Nguyễn Thái Ngọc Duy  
> wrote:
>
> > In order to stop this from happening again, the function is now
> > compiled unconditionally but exits early unless DEBUG_BISECT is
> > non-zero.
>
> Thanks for going the extra mile and doing this!
>
> I wonder if we should also try to make the show_list() function part
> of the trace_*() functions to make it even more regular. This can be a
> separate patch or topic though.

Yeah that's probably a good idea (though I'm not familiar with
bisect.c enough to take that step).
-- 
Duy


Re: [PATCH] bisect.c: make show_list() build again

2018-09-04 Thread Christian Couder
On Mon, Sep 3, 2018 at 7:31 PM, Duy Nguyen  wrote:
> On Sun, Sep 2, 2018 at 9:57 AM Christian Couder
>  wrote:
>>
>> Thanks for going the extra mile and doing this!
>>
>> I wonder if we should also try to make the show_list() function part
>> of the trace_*() functions to make it even more regular. This can be a
>> separate patch or topic though.
>
> Yeah that's probably a good idea (though I'm not familiar with
> bisect.c enough to take that step).

Maybe this could be a GSoC micro project or a left over bit.