diff options
Diffstat (limited to 'vm/mterp/out/InterpC-portstd.c')
-rw-r--r-- | vm/mterp/out/InterpC-portstd.c | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/vm/mterp/out/InterpC-portstd.c b/vm/mterp/out/InterpC-portstd.c index bfda6713d..8b30bd6fc 100644 --- a/vm/mterp/out/InterpC-portstd.c +++ b/vm/mterp/out/InterpC-portstd.c @@ -1217,25 +1217,21 @@ bool INTERP_FUNC_NAME(Thread* self, InterpState* interpState) interpState->pc, interpState->method->name); #endif - #if INTERP_TYPE == INTERP_DBG - /* Check to see if we've got a trace selection request. If we do, - * but something is amiss, revert to the fast interpreter. - */ -#if !defined(WITH_SELF_VERIFICATION) - if (dvmJitCheckTraceRequest(self,interpState)) { - interpState->nextMode = INTERP_STD; - //LOGD("** something wrong, exiting\n"); - return true; - } -#else - if (interpState->jitState != kJitSelfVerification && - dvmJitCheckTraceRequest(self,interpState)) { + /* Check to see if we've got a trace selection request. */ + if ( +#if defined(WITH_SELF_VERIFICATION) + (interpState->jitState != kJitSelfVerification) && +#endif + !gDvm.debuggerActive && +#if defined(WITH_PROFILER) + (gDvm.activeProfilers == 0) && +#endif + dvmJitCheckTraceRequest(self, interpState)) { interpState->nextMode = INTERP_STD; - //LOGD("** something wrong, exiting\n"); + //LOGD("Invalid trace request, exiting\n"); return true; } -#endif /* WITH_SELF_VERIFICATION */ #endif /* INTERP_TYPE == INTERP_DBG */ #endif /* WITH_JIT */ |