Date: Tue, 17 Nov 2009 19:25:01 +0100 From: Jilles Tjoelker <jilles@stack.nl> To: Dmitry Pryanishnikov <lynx.ripe@gmail.com> Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org, Edwin Groothuis <edwin@FreeBSD.org> Subject: Re: svn commit: r194783 - head/lib/libc/stdtime Message-ID: <20091117182501.GA70742@stack.nl> In-Reply-To: <4B01E548.7040708@gmail.com> References: <4B01E548.7040708@gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20091117182501.GA70742>