Fix ClassLinker::MayBeCalledWithDirectCodePointer for JIT
Currently, we don't know if another method has a direct code
pointer or not. This should fix the case where breakpoints
occasionally don't work with JIT.
The JIT now also checks that a method doesn't have any breakpoints
before starting to compile it.
Bug: 17950037
Change-Id: I17cfe874fe4825beba23903a5053d5cb27e106cb
diff --git a/runtime/jit/jit.cc b/runtime/jit/jit.cc
index 13c1f81..5dc739e 100644
--- a/runtime/jit/jit.cc
+++ b/runtime/jit/jit.cc
@@ -128,6 +128,10 @@
bool Jit::CompileMethod(mirror::ArtMethod* method, Thread* self) {
DCHECK(!method->IsRuntimeMethod());
+ if (Dbg::IsDebuggerActive() && Dbg::MethodHasAnyBreakpoints(method)) {
+ VLOG(jit) << "JIT not compiling " << PrettyMethod(method) << " due to breakpoint";
+ return false;
+ }
const bool result = jit_compile_method_(jit_compiler_handle_, method, self);
if (result) {
method->SetEntryPointFromInterpreter(artInterpreterToCompiledCodeBridge);