diff options
author | Mathieu Chartier <mathieuc@google.com> | 2014-12-09 17:38:52 -0800 |
---|---|---|
committer | Mathieu Chartier <mathieuc@google.com> | 2014-12-10 09:43:29 -0800 |
commit | cef50f0487929f72183623bc2a5819cf3a63bff6 (patch) | |
tree | b37c68730d982b1bff28d0faa8072df0354b5dd9 /runtime/well_known_classes.cc | |
parent | b1a38e246cfbfb21100d9c9e57f33970e824f075 (diff) | |
download | art-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.cc | 2 |
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"); |