diff options
author | Nicolas Geoffray <ngeoffray@google.com> | 2014-04-04 08:35:57 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2014-04-04 08:35:57 +0000 |
commit | 839f43a40c9fe170266f42a9726c02195c73d043 (patch) | |
tree | 2fa121695151511832acc8691b9a4d7d1b71a82d /runtime | |
parent | 541dd231f9a7282f7fd1092349a322dc67bafaf2 (diff) | |
parent | 8689a0a0f266dde073fe7b328c3ceeaa1b23276a (diff) | |
download | art-839f43a40c9fe170266f42a9726c02195c73d043.zip art-839f43a40c9fe170266f42a9726c02195c73d043.tar.gz art-839f43a40c9fe170266f42a9726c02195c73d043.tar.bz2 |
Merge "Explicitly instantiate artInvokeCommon to please analysis tool."
Diffstat (limited to 'runtime')
-rw-r--r-- | runtime/entrypoints/quick/quick_trampoline_entrypoints.cc | 33 |
1 files changed, 26 insertions, 7 deletions
diff --git a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc index 9fc173a..61ed472 100644 --- a/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc +++ b/runtime/entrypoints/quick/quick_trampoline_entrypoints.cc @@ -1634,15 +1634,14 @@ extern "C" uint64_t artQuickGenericJniEndTrampoline(Thread* self, mirror::ArtMet } template<InvokeType type, bool access_check> -uint64_t artInvokeCommon(uint32_t method_idx, mirror::Object* this_object, - mirror::ArtMethod* caller_method, - Thread* self, mirror::ArtMethod** sp) - SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); +static uint64_t artInvokeCommon(uint32_t method_idx, mirror::Object* this_object, + mirror::ArtMethod* caller_method, + Thread* self, mirror::ArtMethod** sp); template<InvokeType type, bool access_check> -uint64_t artInvokeCommon(uint32_t method_idx, mirror::Object* this_object, - mirror::ArtMethod* caller_method, - Thread* self, mirror::ArtMethod** sp) { +static uint64_t artInvokeCommon(uint32_t method_idx, mirror::Object* this_object, + mirror::ArtMethod* caller_method, + Thread* self, mirror::ArtMethod** sp) { mirror::ArtMethod* method = FindMethodFast(method_idx, this_object, caller_method, access_check, type); if (UNLIKELY(method == nullptr)) { @@ -1682,6 +1681,26 @@ uint64_t artInvokeCommon(uint32_t method_idx, mirror::Object* this_object, #endif } +// Explicit artInvokeCommon template function declarations to please analysis tool. +#define EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(type, access_check) \ + template SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) \ + static uint64_t artInvokeCommon<type, access_check>(uint32_t method_idx, \ + mirror::Object* this_object, \ + mirror::ArtMethod* caller_method, \ + Thread* self, mirror::ArtMethod** sp) \ + +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kVirtual, false); +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kVirtual, true); +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kInterface, false); +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kInterface, true); +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kDirect, false); +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kDirect, true); +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kStatic, false); +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kStatic, true); +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kSuper, false); +EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL(kSuper, true); +#undef EXPLICIT_INVOKE_COMMON_TEMPLATE_DECL + // See comments in runtime_support_asm.S extern "C" uint64_t artInvokeInterfaceTrampolineWithAccessCheck(uint32_t method_idx, |