Chromium Code Reviews| Index: crypto/openssl_util.cc |
| diff --git a/crypto/openssl_util.cc b/crypto/openssl_util.cc |
| index f41b55a8fff71e45a44d3bf9210979a849178419..8ea12323a92726fa9c6a421bf203c6d653920b83 100644 |
| --- a/crypto/openssl_util.cc |
| +++ b/crypto/openssl_util.cc |
| @@ -48,6 +48,18 @@ class OpenSSLInitSingleton { |
| private: |
| friend struct DefaultSingletonTraits<OpenSSLInitSingleton>; |
| OpenSSLInitSingleton() { |
| +#if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL) |
| + const bool has_neon = |
| + (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0; |
| + // CRYPTO_set_NEON_capable is called before |SSL_library_init| because this |
| + // stops BoringSSL from probing for NEON support via SIGILL in the case |
| + // that getauxval isn't present. |
|
davidben
2015/02/02 19:47:16
Fun fact: this also avoids a deadlock were CRYPTO_
|
| + CRYPTO_set_NEON_capable(has_neon); |
| + // See https://code.google.com/p/chromium/issues/detail?id=341598 |
| + base::CPU cpu; |
| + CRYPTO_set_NEON_functional(!cpu.has_broken_neon()); |
| +#endif |
| + |
| SSL_load_error_strings(); |
| SSL_library_init(); |
| int num_locks = CRYPTO_num_locks(); |
| @@ -56,16 +68,6 @@ class OpenSSLInitSingleton { |
| locks_.push_back(new base::Lock()); |
| CRYPTO_set_locking_callback(LockingCallback); |
| CRYPTO_THREADID_set_callback(CurrentThreadId); |
| - |
| -#if defined(OS_ANDROID) && defined(ARCH_CPU_ARMEL) |
| - const bool has_neon = |
| - (android_getCpuFeatures() & ANDROID_CPU_ARM_FEATURE_NEON) != 0; |
| - if (has_neon) |
| - CRYPTO_set_NEON_capable(1); |
| - // See https://code.google.com/p/chromium/issues/detail?id=341598 |
| - base::CPU cpu; |
| - CRYPTO_set_NEON_functional(!cpu.has_broken_neon()); |
| -#endif |
| } |
| ~OpenSSLInitSingleton() { |