svn commit: r194783 - head/lib/libc/stdtime

Jilles Tjoelker jilles at stack.nl
Tue Nov 17 18:44:50 UTC 2009


On Tue, Nov 17, 2009 at 01:50:32AM +0200, Dmitry Pryanishnikov wrote:
> > Author: edwin
> > Date: Tue Jun 23 22:28:44 2009
> > New Revision: 194783
> > URL: http://svn.freebsd.org/changeset/base/194783

> > Log:
> >   Remove duplicate if-statement on gmt_is_set in gmtsub().

> >   MFC after:	1 week

> > Modified:
> >   head/lib/libc/stdtime/localtime.c

>    This change looks like a (small?) pessimization to me: before it, 
> _MUTEX_LOCK/_MUTEX_UNLOCK pair would be skipped for the case gmt_is_set 
> == TRUE (all invocations except the first one), now it won't. I'm not 
> sure whether this is critical here though...

It is certainly less efficient, but the old code was (most likely)
wrong. It used an idiom known as "double checked locking", which is
incorrect in most memory models. The problem is that the store to
gmt_is_set may become visible without stores to other memory (gmtptr and
what it points to) becoming visible.

-- 
Jilles Tjoelker


More information about the svn-src-all mailing list