diff options
| -rw-r--r-- | runtime/base/mutex.h | 2 | ||||
| -rw-r--r-- | runtime/jit/jit.cc | 9 | ||||
| -rw-r--r-- | runtime/jit/jit_code_cache.cc | 11 |
3 files changed, 8 insertions, 14 deletions
diff --git a/runtime/base/mutex.h b/runtime/base/mutex.h index 17e0339561..3dca12a365 100644 --- a/runtime/base/mutex.h +++ b/runtime/base/mutex.h @@ -76,7 +76,6 @@ enum LockLevel { kReferenceQueueClearedReferencesLock, kReferenceProcessorLock, kJitDebugInterfaceLock, - kJitCodeCacheLock, kAllocSpaceLock, kBumpPointerSpaceBlockLock, kArenaPoolLock, @@ -89,6 +88,7 @@ enum LockLevel { kTracingUniqueMethodsLock, kTracingStreamingLock, kDeoptimizedMethodsLock, + kJitCodeCacheLock, kClassLoaderClassesLock, kDefaultMutexLevel, kMarkSweepLargeObjectLock, diff --git a/runtime/jit/jit.cc b/runtime/jit/jit.cc index 0a6da2cbe3..2a66847177 100644 --- a/runtime/jit/jit.cc +++ b/runtime/jit/jit.cc @@ -635,12 +635,9 @@ void Jit::MethodEntered(Thread* thread, ArtMethod* method) { ProfilingInfo* profiling_info = method->GetProfilingInfo(sizeof(void*)); // Update the entrypoint if the ProfilingInfo has one. The interpreter will call it // instead of interpreting the method. - // We avoid doing this if exit stubs are installed to not mess with the instrumentation. - // TODO(ngeoffray): Clean up instrumentation and code cache interactions. - if ((profiling_info != nullptr) && - (profiling_info->GetSavedEntryPoint() != nullptr) && - !Runtime::Current()->GetInstrumentation()->AreExitStubsInstalled()) { - method->SetEntryPointFromQuickCompiledCode(profiling_info->GetSavedEntryPoint()); + if ((profiling_info != nullptr) && (profiling_info->GetSavedEntryPoint() != nullptr)) { + Runtime::Current()->GetInstrumentation()->UpdateMethodsCode( + method, profiling_info->GetSavedEntryPoint()); } else { AddSamples(thread, method, 1, /* with_backedges */false); } diff --git a/runtime/jit/jit_code_cache.cc b/runtime/jit/jit_code_cache.cc index 1f3e08b39c..752d4ba180 100644 --- a/runtime/jit/jit_code_cache.cc +++ b/runtime/jit/jit_code_cache.cc @@ -354,8 +354,7 @@ uint8_t* JitCodeCache::CommitCodeInternal(Thread* self, if (osr) { number_of_osr_compilations_++; osr_code_map_.Put(method, code_ptr); - } else if (!Runtime::Current()->GetInstrumentation()->AreExitStubsInstalled()) { - // TODO(ngeoffray): Clean up instrumentation and code cache interactions. + } else { Runtime::Current()->GetInstrumentation()->UpdateMethodsCode( method, method_header->GetEntryPoint()); } @@ -634,10 +633,7 @@ void JitCodeCache::GarbageCollectCache(Thread* self) { bool next_collection_will_be_full = ShouldDoFullCollection(); // Start polling the liveness of compiled code to prepare for the next full collection. - // We avoid doing this if exit stubs are installed to not mess with the instrumentation. - // TODO(ngeoffray): Clean up instrumentation and code cache interactions. - if (!Runtime::Current()->GetInstrumentation()->AreExitStubsInstalled() && - next_collection_will_be_full) { + if (next_collection_will_be_full) { // Save the entry point of methods we have compiled, and update the entry // point of those methods to the interpreter. If the method is invoked, the // interpreter will update its entry point to the compiled code and call it. @@ -645,7 +641,8 @@ void JitCodeCache::GarbageCollectCache(Thread* self) { const void* entry_point = info->GetMethod()->GetEntryPointFromQuickCompiledCode(); if (ContainsPc(entry_point)) { info->SetSavedEntryPoint(entry_point); - info->GetMethod()->SetEntryPointFromQuickCompiledCode(GetQuickToInterpreterBridge()); + Runtime::Current()->GetInstrumentation()->UpdateMethodsCode( + info->GetMethod(), GetQuickToInterpreterBridge()); } } |