Another fix at setting entrypoints in the runtime image.
- We can use nterp even if a method needs access checks.
- We can use the resolution trampoline when a method needs an
initialization check.
Test: test.py
Bug: 260557058
Change-Id: Ie2b9de39c99b9c070a10572c6b9eb82995e7486b
diff --git a/runtime/runtime_image.cc b/runtime/runtime_image.cc
index 9131fda..661a35c 100644
--- a/runtime/runtime_image.cc
+++ b/runtime/runtime_image.cc
@@ -740,12 +740,12 @@
StubType stub;
if (method->IsNative()) {
stub = StubType::kQuickGenericJNITrampoline;
- } else if (cls->IsVerified() &&
- method->SkipAccessChecks() &&
- !method->NeedsClinitCheckBeforeCall()) {
- stub = StubType::kNterpTrampoline;
- } else {
+ } else if (!cls->IsVerified()) {
stub = StubType::kQuickToInterpreterBridge;
+ } else if (method->NeedsClinitCheckBeforeCall()) {
+ stub = StubType::kQuickResolutionTrampoline;
+ } else {
+ stub = StubType::kNterpTrampoline;
}
const std::vector<gc::space::ImageSpace*>& image_spaces =
Runtime::Current()->GetHeap()->GetBootImageSpaces();