| Index: src/core/SkLazyPtr.h | 
| diff --git a/src/core/SkLazyPtr.h b/src/core/SkLazyPtr.h | 
| index 13218a749ef138e0751ee29b990417a3b8a51bea..0612327dab4073226b2725fc137b307dceef067f 100644 | 
| --- a/src/core/SkLazyPtr.h | 
| +++ b/src/core/SkLazyPtr.h | 
| @@ -47,15 +47,18 @@ | 
| *  We may call Create more than once, but all threads will see the same pointer | 
| *  returned from get().  Any extra calls to Create will be cleaned up. | 
| * | 
| - *  These macros must be used in a global or function scope, not as a class member. | 
| + *  These macros must be used in a global scope, not in function scope or as a class member. | 
| */ | 
|  | 
| #define SK_DECLARE_STATIC_LAZY_PTR(T, name, ...) \ | 
| -    static Private::SkLazyPtr<T, ##__VA_ARGS__> name | 
| +    namespace {} static Private::SkLazyPtr<T, ##__VA_ARGS__> name | 
|  | 
| #define SK_DECLARE_STATIC_LAZY_PTR_ARRAY(T, name, N, ...) \ | 
| -    static Private::SkLazyPtrArray<T, N, ##__VA_ARGS__> name | 
| +    namespace {} static Private::SkLazyPtrArray<T, N, ##__VA_ARGS__> name | 
|  | 
| +// namespace {} forces these macros to only be legal in global scopes.  Chrome has thread-safety | 
| +// problems with them in function-local statics because it uses -fno-threadsafe-statics, and even | 
| +// in builds with threadsafe statics, those threadsafe statics are just unnecessary overhead. | 
|  | 
|  | 
| // Everything below here is private implementation details.  Don't touch, don't even look. | 
|  |