diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-03-02 13:28:37 -0800 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-03-03 17:08:30 -0800 |
commit | d889178ec78930538d9d6a66c3df9ee9afaffbb4 (patch) | |
tree | 6fa250bdadcdfc1702f57500e618b51df6d46828 /runtime/arch/arm/entrypoints_init_arm.cc | |
parent | 06c09f6d79e037ee00113d6289ef98226680797d (diff) | |
download | android_art-d889178ec78930538d9d6a66c3df9ee9afaffbb4.tar.gz android_art-d889178ec78930538d9d6a66c3df9ee9afaffbb4.tar.bz2 android_art-d889178ec78930538d9d6a66c3df9ee9afaffbb4.zip |
Guard entrypoint changing by runtime shutdown lock.
There was a race when we changed the allocation entrypoints where a
new thread would be starting (Thread::Init) and initialize to the
wrong entrypoints. Guarding allocation entrypoint changing
with the runtime shutdown lock fixes this race condition since
Thread::Init is only called with the runtime shutdown lock held.
Bug: 13250963
Change-Id: I8eb209c124b6bf17020de874e1b0083f158b8200
Diffstat (limited to 'runtime/arch/arm/entrypoints_init_arm.cc')
-rw-r--r-- | runtime/arch/arm/entrypoints_init_arm.cc | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/runtime/arch/arm/entrypoints_init_arm.cc b/runtime/arch/arm/entrypoints_init_arm.cc index fc85ae370c..23e3433116 100644 --- a/runtime/arch/arm/entrypoints_init_arm.cc +++ b/runtime/arch/arm/entrypoints_init_arm.cc @@ -16,6 +16,7 @@ #include "entrypoints/interpreter/interpreter_entrypoints.h" #include "entrypoints/portable/portable_entrypoints.h" +#include "entrypoints/quick/quick_alloc_entrypoints.h" #include "entrypoints/quick/quick_entrypoints.h" #include "entrypoints/entrypoint_utils.h" #include "entrypoints/math_entrypoints.h" @@ -130,8 +131,6 @@ extern "C" void art_quick_throw_stack_overflow(void*); // Generic JNI downcall extern "C" void art_quick_generic_jni_trampoline(mirror::ArtMethod*); -extern void ResetQuickAllocEntryPoints(QuickEntryPoints* qpoints); - void InitEntryPoints(InterpreterEntryPoints* ipoints, JniEntryPoints* jpoints, PortableEntryPoints* ppoints, QuickEntryPoints* qpoints) { // Interpreter |