external/vixl/src \
external/zlib \
-# We optimize Thread::Current() with a direct TLS access. This requires access to a private
-# Bionic header.
-# Note: technically we only need this on device, but this avoids the duplication of the includes.
-ART_C_INCLUDES += bionic/libc/private
-
# Base set of cflags used by all things ART.
art_cflags := \
-fno-rtti \
#include "thread.h"
-#ifdef HAVE_ANDROID_OS
-#include <bionic_tls.h> // Access to our own TLS slot.
-#endif
-
#include <pthread.h>
#include "base/casts.h"
if (!is_started_) {
return nullptr;
} else {
-#ifdef HAVE_ANDROID_OS
- void* thread = __get_tls()[TLS_SLOT_ART_THREAD_SELF];
-#else
void* thread = pthread_getspecific(Thread::pthread_key_self_);
-#endif
return reinterpret_cast<Thread*>(thread);
}
}
InitCardTable();
InitTid();
-#ifdef HAVE_ANDROID_OS
- __get_tls()[TLS_SLOT_ART_THREAD_SELF] = this;
-#else
CHECK_PTHREAD_CALL(pthread_setspecific, (Thread::pthread_key_self_, this), "attach self");
-#endif
DCHECK_EQ(Thread::Current(), this);
tls32_.thin_lock_thread_id = thread_list->AllocThreadId(this);