diff options
author | 2022-06-11 09:22:57 +0000 | |
---|---|---|
committer | 2022-06-14 18:03:44 +0000 | |
commit | e32c970b47587e47697a3dab1c329f071d506643 (patch) | |
tree | 56e65801d26d02a70374bbd4859148469228ca3c /openjdkjvmti/deopt_manager.cc | |
parent | f44070ed04ea147ad19e8bcd43faec5fc880408d (diff) |
Don't install instrumentation stubs for single thread deopts
Single thread deoptimization doesn't need anything special. Don't
install instrumentation stubs. This CL also have a couple of fixes
which were masked by this:
1. When initializing method's code, check if method was already deoptimized and install interpreter stubs for such methods
2. Also check for any debugger frames before restoring the
instrumentation stack.
Test: art/test.py
Bug: 234888286
Bug: 206029744
Change-Id: Ie9a9ca01e8f299391c8b22ecb7694ca90f934d5f
Diffstat (limited to 'openjdkjvmti/deopt_manager.cc')
-rw-r--r-- | openjdkjvmti/deopt_manager.cc | 10 |
1 files changed, 1 insertions, 9 deletions
diff --git a/openjdkjvmti/deopt_manager.cc b/openjdkjvmti/deopt_manager.cc index a15e6678f1..312a797b9d 100644 --- a/openjdkjvmti/deopt_manager.cc +++ b/openjdkjvmti/deopt_manager.cc @@ -460,15 +460,7 @@ void DeoptManager::AddDeoptimizationRequester() { art::ScopedThreadStateChange stsc(self, art::ThreadState::kSuspended); deoptimization_status_lock_.ExclusiveLock(self); deopter_count_++; - if (deopter_count_ == 1) { - ScopedDeoptimizationContext sdc(self, this); - art::instrumentation::Instrumentation* instrumentation = - art::Runtime::Current()->GetInstrumentation(); - // Tell instrumentation we will be deopting single threads. - instrumentation->EnableSingleThreadDeopt(kInstrumentationKey); - } else { - deoptimization_status_lock_.ExclusiveUnlock(self); - } + deoptimization_status_lock_.ExclusiveUnlock(self); } void DeoptManager::DeoptimizeThread(art::Thread* target) { |