diff options
Diffstat (limited to 'runtime/jit/jit_code_cache.cc')
-rw-r--r-- | runtime/jit/jit_code_cache.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/runtime/jit/jit_code_cache.cc b/runtime/jit/jit_code_cache.cc index 64b2c899aa..a6909d839f 100644 --- a/runtime/jit/jit_code_cache.cc +++ b/runtime/jit/jit_code_cache.cc @@ -737,8 +737,16 @@ bool JitCodeCache::NotifyCompilationOf(ArtMethod* method, Thread* self) { if (ContainsPc(method->GetEntryPointFromQuickCompiledCode())) { return false; } - MutexLock mu(self, lock_); + + // Compiling requires a profiling info object to notify compilation. Create + // one if it hasn't been done before. ProfilingInfo* info = method->GetProfilingInfo(sizeof(void*)); + if (info == nullptr) { + ProfilingInfo::Create(self, method, /* retry_allocation */ true); + } + + MutexLock mu(self, lock_); + info = method->GetProfilingInfo(sizeof(void*)); if (info == nullptr || info->IsMethodBeingCompiled()) { return false; } |