Don't JIT compile eagerly methods that have the resolution stub.
We need to keep the stub to do proper class initialization.
Bug: 119800099
Test: m jitzygote && boot with no failing app
Change-Id: Ie8189fe2009df76a02cd04759b807dc861bd8180
diff --git a/runtime/jit/jit.cc b/runtime/jit/jit.cc
index cbfc3a1..7eb58fe 100644
--- a/runtime/jit/jit.cc
+++ b/runtime/jit/jit.cc
@@ -712,9 +712,12 @@
continue;
}
const void* entry_point = method->GetEntryPointFromQuickCompiledCode();
+ // TODO: if the entry point is the resolution stub, we should not update the
+ // entrypoint as we rely on the stub for doing the class initialization. Because
+ // we currently have no place to safely store the compiled code, we just don't
+ // compile it for now.
if (class_linker->IsQuickToInterpreterBridge(entry_point) ||
- class_linker->IsQuickGenericJniStub(entry_point) ||
- class_linker->IsQuickResolutionStub(entry_point)) {
+ class_linker->IsQuickGenericJniStub(entry_point)) {
if (!method->IsNative()) {
// The compiler requires a ProfilingInfo object for non-native methods.
ProfilingInfo::Create(self, method, /* retry_allocation= */ true);