From a75e5892fba6d0208f33e9ab8e19e732daf94996 Mon Sep 17 00:00:00 2001 From: Alex Light Date: Mon, 11 Mar 2019 15:49:40 +0000 Subject: Revert^2 "Remove Global deopt requirement for several jvmti events" This reverts commit ad344b6a14feba90a06a205760e9bc766c56cab0. Jit-on-first-use would cause the runtime to skip sending FramePop events for exceptions in some circumstances due to longjmp-ing over the frames. This requires forcing jit off from the first instant a thread can get frame popped events, which is unfortunate. Reason for revert: Fixed issue causing 1925 to fail on jit-on-first-use and redefine-stress Test: ./test.py --host Test: ./art/test/testrunner/run_build_test_target.py -j50 art-jit-on-first-use Change-Id: I6ec2a799db1041262a055be10e1af1faece6f2fc --- runtime/art_method.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'runtime/art_method.cc') diff --git a/runtime/art_method.cc b/runtime/art_method.cc index c7e41bec5f..0f25ec433e 100644 --- a/runtime/art_method.cc +++ b/runtime/art_method.cc @@ -322,7 +322,9 @@ void ArtMethod::Invoke(Thread* self, uint32_t* args, uint32_t args_size, JValue* // If the runtime is not yet started or it is required by the debugger, then perform the // Invocation by the interpreter, explicitly forcing interpretation over JIT to prevent // cycling around the various JIT/Interpreter methods that handle method invocation. - if (UNLIKELY(!runtime->IsStarted() || Dbg::IsForcedInterpreterNeededForCalling(self, this))) { + if (UNLIKELY(!runtime->IsStarted() || + (self->IsForceInterpreter() && !IsNative() && !IsProxyMethod() && IsInvokable()) || + Dbg::IsForcedInterpreterNeededForCalling(self, this))) { if (IsStatic()) { art::interpreter::EnterInterpreterFromInvoke( self, this, nullptr, args, result, /*stay_in_interpreter=*/ true); -- cgit v1.2.3-59-g8ed1b