Fix longstanding deopt issue not using the right deopt type.
Also add comments for hotness entrypoints.
Test: test.py
Bug: 203253172
Change-Id: I68bc195b3ff5db13997a47fbb5e755d888e1dc04
diff --git a/runtime/interpreter/mterp/nterp.cc b/runtime/interpreter/mterp/nterp.cc
index 4fe4e15..009f9bc 100644
--- a/runtime/interpreter/mterp/nterp.cc
+++ b/runtime/interpreter/mterp/nterp.cc
@@ -725,6 +725,10 @@
extern "C" jit::OsrData* NterpHotMethod(ArtMethod* method, uint16_t* dex_pc_ptr, uint32_t* vregs)
REQUIRES_SHARED(Locks::mutator_lock_) {
+ // It is important this method is not suspended because it can be called on
+ // method entry and async deoptimization does not expect runtime methods other than the
+ // suspend entrypoint before executing the first instruction of a Java
+ // method.
ScopedAssertNoThreadSuspension sants("In nterp");
Runtime* runtime = Runtime::Current();
method->ResetCounter(runtime->GetJITOptions()->GetWarmupThreshold());