darin at apple.com
Mon Mar 29 13:59:53 PDT 2010
On Mar 29, 2010, at 1:10 PM, Eric Seidel wrote:
> http://trac.webkit.org/changeset/38411 mentions the GCC bug I was referring to. I've never seen the Radar so I don't know what it was about exactly.
I see where the confusion is coming from. The GCC bug is not the reason we have DEFINE_STATIC_LOCAL. Rather, it’s a bug that constrains the implementation of DEFINE_STATIC_LOCAL.
Originally we had a version of the macro that looked like this:
#define DEFINE_STATIC_LOCAL(type, name, arguments) static type& name = *new type arguments;
That won’t work because of the GCC bug. Instead we have this:
#define DEFINE_STATIC_LOCAL(type, name, arguments) \
static type* name##Ptr = new type arguments; \
type& name = *name##Ptr
Using a macro for this purpose both lets us have that workaround for the GCC bug and also makes it possible to experiment with other WebKit-wide changes to this static global strategy.
More information about the webkit-dev