ART: Scope runnable part of JitCompileTask
Do not run ProfileSaver code under mutator lock.
Bug: 137339043
Test: m
Change-Id: Idfdb6992946dfc5186d2a047b80947b40224c6e3
diff --git a/runtime/jit/jit.cc b/runtime/jit/jit.cc
index 153761c..4430c1b 100644
--- a/runtime/jit/jit.cc
+++ b/runtime/jit/jit.cc
@@ -591,25 +591,27 @@
}
void Run(Thread* self) override {
- ScopedObjectAccess soa(self);
- switch (kind_) {
- case TaskKind::kPreCompile:
- case TaskKind::kCompile:
- case TaskKind::kCompileBaseline:
- case TaskKind::kCompileOsr: {
- Runtime::Current()->GetJit()->CompileMethod(
- method_,
- self,
- /* baseline= */ (kind_ == TaskKind::kCompileBaseline),
- /* osr= */ (kind_ == TaskKind::kCompileOsr),
- /* prejit= */ (kind_ == TaskKind::kPreCompile));
- break;
- }
- case TaskKind::kAllocateProfile: {
- if (ProfilingInfo::Create(self, method_, /* retry_allocation= */ true)) {
- VLOG(jit) << "Start profiling " << ArtMethod::PrettyMethod(method_);
+ {
+ ScopedObjectAccess soa(self);
+ switch (kind_) {
+ case TaskKind::kPreCompile:
+ case TaskKind::kCompile:
+ case TaskKind::kCompileBaseline:
+ case TaskKind::kCompileOsr: {
+ Runtime::Current()->GetJit()->CompileMethod(
+ method_,
+ self,
+ /* baseline= */ (kind_ == TaskKind::kCompileBaseline),
+ /* osr= */ (kind_ == TaskKind::kCompileOsr),
+ /* prejit= */ (kind_ == TaskKind::kPreCompile));
+ break;
}
- break;
+ case TaskKind::kAllocateProfile: {
+ if (ProfilingInfo::Create(self, method_, /* retry_allocation= */ true)) {
+ VLOG(jit) << "Start profiling " << ArtMethod::PrettyMethod(method_);
+ }
+ break;
+ }
}
}
ProfileSaver::NotifyJitActivity();