On 03/31/15 08:23 PM, Matt Turner wrote:
I suspect you did most of this with Coccinelle,

That would have been smart, one of these days I should install Coccinelle
and learn to use it.   Fortunately, this wasn't an overwhelming number to
change by hand.

but I definitely
noticed an attention to detail that shows that some of this must have
been manual. E.g., transforming malloc(3 * size * sizeof(CARD16)) into

| xallocarray(length, 3 * sizeof(CARD16))

instead of

| xallocarray(3 * length, sizeof(CARD16))

so that the 3 * sizeof(CARD16) can be evaluated at compile time.

Yes, and because I can guarantee that 3 * sizeof(CARD16) will never overflow,
while I can't say the same for 3 * length.

Nice of you to get rid of some useless casts as well.

That's just ingrained habit at this point (though I tried to avoid breaking
Xvnc again by changing any in the headers - I should do a build to check that
though).

It's minorly unfortunate that a lot of these multiplies (that are by
powers of two) can no longer be turned into shifts, but I guess that's
the price of some additional safety.

Since this math leads immediately into the memory allocator, I doubt anyone
will ever measure the performance change of one additional multiply in this
code path compared to the far larger number of instructions used in memory
allocation.


--
        -Alan Coopersmith-              alan.coopersm...@oracle.com
         Oracle Solaris Engineering - http://blogs.oracle.com/alanc
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to