Merge "Make __get_thread inlined."

This commit is contained in:
Yabin Cui 2015-03-19 02:50:19 +00:00 committed by Gerrit Code Review
commit 6943f2968c
3 changed files with 12 additions and 6 deletions

View File

@ -346,6 +346,14 @@ extern "C" void* dlmalloc(size_t size) {
return malloc(size);
}
#define __get_thread __real_get_thread
#include "pthread_internal.h"
#undef __get_thread
// Various third-party apps contain a backport of our pthread_rwlock implementation that uses this.
extern "C" pthread_internal_t* __get_thread() {
return __real_get_thread();
}
#endif // !defined(__LP64__)
// This is never implemented in bionic, only needed for ABI compatibility with the NDK.

View File

@ -113,8 +113,10 @@ __LIBC_HIDDEN__ void __init_tls(pthread_internal_t* thread);
__LIBC_HIDDEN__ void __init_alternate_signal_stack(pthread_internal_t*);
__LIBC_HIDDEN__ void _pthread_internal_add(pthread_internal_t* thread);
/* Various third-party apps contain a backport of our pthread_rwlock implementation that uses this. */
extern "C" __LIBC64_HIDDEN__ pthread_internal_t* __get_thread(void);
// Make __get_thread() inlined for performance reason. See http://b/19825434.
static inline __always_inline pthread_internal_t* __get_thread() {
return reinterpret_cast<pthread_internal_t*>(__get_tls()[TLS_SLOT_THREAD_ID]);
}
__LIBC_HIDDEN__ void pthread_key_clean_all(void);
__LIBC_HIDDEN__ void _pthread_internal_remove_locked(pthread_internal_t* thread, bool free_thread);

View File

@ -68,7 +68,3 @@ void _pthread_internal_add(pthread_internal_t* thread) {
}
g_thread_list = thread;
}
pthread_internal_t* __get_thread(void) {
return reinterpret_cast<pthread_internal_t*>(__get_tls()[TLS_SLOT_THREAD_ID]);
}