| Index: third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc
|
| diff --git a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc
|
| index 53c9eae0fa73fcabac3f6acb493130e754d2169a..3eb6687804889d9b1c2680ce638bcd04d35da4ad 100644
|
| --- a/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc
|
| +++ b/third_party/protobuf/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc
|
| @@ -58,23 +58,13 @@
|
| : "=a" (a), "=D" (b), "=c" (c), "=d" (d) : "a" (inp))
|
| #endif
|
|
|
| -#if defined(cpuid) // initialize the struct only on x86
|
| -
|
| namespace google {
|
| namespace protobuf {
|
| namespace internal {
|
|
|
| -// Set the flags so that code will run correctly and conservatively, so even
|
| -// if we haven't been initialized yet, we're probably single threaded, and our
|
| -// default values should hopefully be pretty safe.
|
| -struct AtomicOps_x86CPUFeatureStruct AtomicOps_Internalx86CPUFeatures = {
|
| - false, // bug can't exist before process spawns multiple threads
|
| - false, // no SSE2
|
| -};
|
| +#if defined(cpuid) // initialize the struct only on x86
|
|
|
| -namespace {
|
| -
|
| -// Initialize the AtomicOps_Internalx86CPUFeatures struct.
|
| +// Initialize the cr_AtomicOps_Internalx86CPUFeatures struct.
|
| void AtomicOps_Internalx86CPUFeaturesInit() {
|
| uint32_t eax;
|
| uint32_t ebx;
|
| @@ -107,31 +97,20 @@ void AtomicOps_Internalx86CPUFeaturesInit() {
|
| if (strcmp(vendor, "AuthenticAMD") == 0 && // AMD
|
| family == 15 &&
|
| 32 <= model && model <= 63) {
|
| - AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug = true;
|
| + cr_AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug = true;
|
| } else {
|
| - AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug = false;
|
| + cr_AtomicOps_Internalx86CPUFeatures.has_amd_lock_mb_bug = false;
|
| }
|
|
|
| // edx bit 26 is SSE2 which we use to tell use whether we can use mfence
|
| - AtomicOps_Internalx86CPUFeatures.has_sse2 = ((edx >> 26) & 1);
|
| + cr_AtomicOps_Internalx86CPUFeatures.has_sse2 = ((edx >> 26) & 1);
|
| }
|
| -
|
| -class AtomicOpsx86Initializer {
|
| - public:
|
| - AtomicOpsx86Initializer() {
|
| - AtomicOps_Internalx86CPUFeaturesInit();
|
| - }
|
| -};
|
| -
|
| -// A global to get use initialized on startup via static initialization :/
|
| -AtomicOpsx86Initializer g_initer;
|
| -
|
| -} // namespace
|
| +#else
|
| +void AtomicOps_Internalx86CPUFeaturesInit() {}
|
| +#endif // __i386__
|
|
|
| } // namespace internal
|
| } // namespace protobuf
|
| } // namespace google
|
|
|
| -#endif // __i386__
|
| -
|
| #endif // GOOGLE_PROTOBUF_ATOMICOPS_INTERNALS_X86_GCC_H_
|
|
|