summaryrefslogtreecommitdiff
path: root/runtime/class_linker.h
diff options
context:
space:
mode:
author Alex Light <allight@google.com> 2016-01-07 14:49:16 -0800
committer Alex Light <allight@google.com> 2016-01-28 15:46:55 -0800
commitfedd91d50930e160c021d65b3740264f6ffec260 (patch)
tree5f356423e51f3bd71020ba0a5f024c54adc959e7 /runtime/class_linker.h
parent97f4bc04b61d5cf78b0820dbf18e999b20d7a108 (diff)
Optimizing compiler support for directly calling interface methods
This teaches the optimizing compiler how to perform invoke-super on interfaces. This should make the invokes generally faster. Bug: 24618811 Change-Id: I7f9b0fb1209775c1c8837ab5d21f8acba3cc72a5
Diffstat (limited to 'runtime/class_linker.h')
-rw-r--r--runtime/class_linker.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/runtime/class_linker.h b/runtime/class_linker.h
index 4975c29742..99dd073d56 100644
--- a/runtime/class_linker.h
+++ b/runtime/class_linker.h
@@ -284,6 +284,15 @@ class ClassLinker {
ArtMethod* GetResolvedMethod(uint32_t method_idx, ArtMethod* referrer)
SHARED_REQUIRES(Locks::mutator_lock_);
+
+ // This returns the class referred to by GetMethodId(method_idx).class_idx_. This might be
+ // different then the declaring class of the resolved method due to copied
+ // miranda/default/conflict methods.
+ mirror::Class* ResolveReferencedClassOfMethod(Thread* self,
+ uint32_t method_idx,
+ ArtMethod* referrer)
+ SHARED_REQUIRES(Locks::mutator_lock_)
+ REQUIRES(!dex_lock_, !Roles::uninterruptible_);
template <ResolveMode kResolveMode>
ArtMethod* ResolveMethod(Thread* self, uint32_t method_idx, ArtMethod* referrer, InvokeType type)
SHARED_REQUIRES(Locks::mutator_lock_)