summaryrefslogtreecommitdiffstats
path: root/runtime/arch/arm/entrypoints_init_arm.cc
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2014-03-02 13:28:37 -0800
committerMathieu Chartier <mathieuc@google.com>2014-03-03 17:08:30 -0800
commitd889178ec78930538d9d6a66c3df9ee9afaffbb4 (patch)
tree6fa250bdadcdfc1702f57500e618b51df6d46828 /runtime/arch/arm/entrypoints_init_arm.cc
parent06c09f6d79e037ee00113d6289ef98226680797d (diff)
downloadandroid_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.cc3
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