diff options
| author | 2017-07-11 19:57:31 +0000 | |
|---|---|---|
| committer | 2017-07-11 19:57:31 +0000 | |
| commit | 2ea15e1f2f5ad3389646986e03632afbd56c7908 (patch) | |
| tree | 93bec2e349537400a4a57655527391bbcc35716a | |
| parent | 8e913e42328937673c95a4c5164d1586807b4825 (diff) | |
| parent | 8c5e2dad9f585562f6a5b3ed2242a5d4a11fce3c (diff) | |
Merge "Move ThreadDeath event before clearing Thread.nativePeer"
| -rw-r--r-- | runtime/thread.cc | 9 |
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. |