summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/base/mutex.h2
-rw-r--r--runtime/jit/jit.cc9
-rw-r--r--runtime/jit/jit_code_cache.cc11
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());
}
}