[PATCH 1 of 2] reachableroots: bail if integer object cannot be allocated

Matt Mackall mpm at selenic.com
Fri Aug 14 15:29:57 CDT 2015


On Fri, 2015-08-14 at 19:25 +0900, Yuya Nishihara wrote:
> # HG changeset patch
> # User Yuya Nishihara <yuya at tcha.org>
> # Date 1439523116 -32400
> #      Fri Aug 14 12:31:56 2015 +0900
> # Node ID 949f27368952a03365a84ec81d1a6aefe4e8319a
> # Parent  0b57b77f9b3ed5c1cc24ce95173c4f7e824df13f
> reachableroots: bail if integer object cannot be allocated
> 
> This patch also replaces Py_XDECREF() by Py_DECREF() because we known "val"
> and "p" are not NULL.
> 
> BTW, we can eliminate some of these allocation and error handling of int objects
> if the internal "seen" array has more information. For example,
> 
>   enum { SEEN = 1, ROOT = 2, REACHABLE = 4 };
>   /* ... build ROOT mask from roots argument ... */
>   if (seen[revnum + 1] & ROOT) {  /* instead of PySet_Contains(roots, val) */
> 
> >From my quick hack, it is 2x faster.

Sounds good.

-- 
Mathematics is the supreme nostalgia of our time.



More information about the Mercurial-devel mailing list