summaryrefslogtreecommitdiffstats
path: root/runtime/well_known_classes.cc
diff options
context:
space:
mode:
authorMathieu Chartier <mathieuc@google.com>2014-12-09 17:38:52 -0800
committerMathieu Chartier <mathieuc@google.com>2014-12-10 09:43:29 -0800
commitcef50f0487929f72183623bc2a5819cf3a63bff6 (patch)
treeb37c68730d982b1bff28d0faa8072df0354b5dd9 /runtime/well_known_classes.cc
parentb1a38e246cfbfb21100d9c9e57f33970e824f075 (diff)
downloadart-cef50f0487929f72183623bc2a5819cf3a63bff6.zip
art-cef50f0487929f72183623bc2a5819cf3a63bff6.tar.gz
art-cef50f0487929f72183623bc2a5819cf3a63bff6.tar.bz2
Stop daemon threads in runtime shutdown
Ensure that daemons are stopped and joins before bringing down the runtime. This fixes bugs related to native code still running when we shutdown the runtime. Also changed the mutex destructor to allow contenders if we are deleting a monitor lock level mutex. Bug: 18577101 Change-Id: I6457b35fd69c6997b9003b5f15f39861749843a9
Diffstat (limited to 'runtime/well_known_classes.cc')
-rw-r--r--runtime/well_known_classes.cc2
1 files changed, 2 insertions, 0 deletions
diff --git a/runtime/well_known_classes.cc b/runtime/well_known_classes.cc
index 16338c4..80bed23 100644
--- a/runtime/well_known_classes.cc
+++ b/runtime/well_known_classes.cc
@@ -69,6 +69,7 @@ jmethodID WellKnownClasses::java_lang_ClassNotFoundException_init;
jmethodID WellKnownClasses::java_lang_Daemons_requestGC;
jmethodID WellKnownClasses::java_lang_Daemons_requestHeapTrim;
jmethodID WellKnownClasses::java_lang_Daemons_start;
+jmethodID WellKnownClasses::java_lang_Daemons_stop;
jmethodID WellKnownClasses::java_lang_Double_valueOf;
jmethodID WellKnownClasses::java_lang_Float_valueOf;
jmethodID WellKnownClasses::java_lang_Integer_valueOf;
@@ -207,6 +208,7 @@ void WellKnownClasses::Init(JNIEnv* env) {
java_lang_Daemons_requestGC = CacheMethod(env, java_lang_Daemons, true, "requestGC", "()V");
java_lang_Daemons_requestHeapTrim = CacheMethod(env, java_lang_Daemons, true, "requestHeapTrim", "()V");
java_lang_Daemons_start = CacheMethod(env, java_lang_Daemons, true, "start", "()V");
+ java_lang_Daemons_stop = CacheMethod(env, java_lang_Daemons, true, "stop", "()V");
ScopedLocalRef<jclass> java_lang_ref_FinalizerReference(env, env->FindClass("java/lang/ref/FinalizerReference"));
java_lang_ref_FinalizerReference_add = CacheMethod(env, java_lang_ref_FinalizerReference.get(), true, "add", "(Ljava/lang/Object;)V");