Performance improvement to strnlen().
Lee Thomas
lee_thomas at aslantools.com
Mon May 27 03:55:16 UTC 2013
On 2013-05-26 08:00, Václav Zeman wrote:
> On 05/25/2013 10:27 PM, Lee Thomas wrote:
>> + lp = (const unsigned long *)((uintptr_t)str & ~LONGPTR_MASK);
>> + va = (*lp - mask01);
>> + vb = ((~*lp) & mask80);
> I do not think that this correct C. This is type punning violating
> the
> rules of the language.
Hello Václav,
The aliasing here is safe, because there are no writes through either
of the pointers, and the reads are correctly aligned.
Regards,
Lee Thomas
More information about the freebsd-hackers
mailing list