summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <treehugger-gerrit@google.com> 2017-07-11 19:57:31 +0000
committer Gerrit Code Review <noreply-gerritcodereview@google.com> 2017-07-11 19:57:31 +0000
commit2ea15e1f2f5ad3389646986e03632afbd56c7908 (patch)
tree93bec2e349537400a4a57655527391bbcc35716a
parent8e913e42328937673c95a4c5164d1586807b4825 (diff)
parent8c5e2dad9f585562f6a5b3ed2242a5d4a11fce3c (diff)
Merge "Move ThreadDeath event before clearing Thread.nativePeer"
-rw-r--r--runtime/thread.cc9
1 files changed, 4 insertions, 5 deletions
diff --git a/runtime/thread.cc b/runtime/thread.cc
index 36ecd3398c..fc30832189 100644
--- a/runtime/thread.cc
+++ b/runtime/thread.cc
@@ -2134,6 +2134,10 @@ void Thread::Destroy() {
ScopedObjectAccess soa(self);
// We may need to call user-supplied managed code, do this before final clean-up.
HandleUncaughtExceptions(soa);
+ Runtime* runtime = Runtime::Current();
+ if (runtime != nullptr) {
+ runtime->GetRuntimeCallbacks()->ThreadDeath(self);
+ }
RemoveFromThreadGroup(soa);
// this.nativePeer = 0;
@@ -2144,11 +2148,6 @@ void Thread::Destroy() {
jni::DecodeArtField(WellKnownClasses::java_lang_Thread_nativePeer)
->SetLong<false>(tlsPtr_.opeer, 0);
}
- Runtime* runtime = Runtime::Current();
- if (runtime != nullptr) {
- runtime->GetRuntimeCallbacks()->ThreadDeath(self);
- }
-
// Thread.join() is implemented as an Object.wait() on the Thread.lock object. Signal anyone
// who is waiting.