139ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers/*
239ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers * Copyright (C) 2013 The Android Open Source Project
339ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers *
439ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers * Licensed under the Apache License, Version 2.0 (the "License");
539ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers * you may not use this file except in compliance with the License.
639ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers * You may obtain a copy of the License at
739ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers *
839ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers *      http://www.apache.org/licenses/LICENSE-2.0
939ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers *
1039ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers * Unless required by applicable law or agreed to in writing, software
1139ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers * distributed under the License is distributed on an "AS IS" BASIS,
1239ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1339ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers * See the License for the specific language governing permissions and
1439ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers * limitations under the License.
1539ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers */
1639ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers
17fc0e3219edc9a5bf81b166e82fd5db2796eb6a0dBrian Carlstrom#ifndef ART_RUNTIME_MIRROR_DEX_CACHE_INL_H_
18fc0e3219edc9a5bf81b166e82fd5db2796eb6a0dBrian Carlstrom#define ART_RUNTIME_MIRROR_DEX_CACHE_INL_H_
1939ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers
2039ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers#include "dex_cache.h"
2139ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers
2239ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogersnamespace art {
2339ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogersnamespace mirror {
2439ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers
25ea46f950e7a51585db293cd7f047de190a482414Brian Carlstrominline ArtMethod* DexCache::GetResolvedMethod(uint32_t method_idx) const
2639ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers    SHARED_LOCKS_REQUIRED(Locks::mutator_lock_) {
27ea46f950e7a51585db293cd7f047de190a482414Brian Carlstrom  ArtMethod* method = GetResolvedMethods()->Get(method_idx);
2839ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers  // Hide resolution trampoline methods from the caller
2939ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers  if (method != NULL && method->IsRuntimeMethod()) {
3039ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers    DCHECK(method == Runtime::Current()->GetResolutionMethod());
3139ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers    return NULL;
3239ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers  } else {
3339ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers    return method;
3439ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers  }
3539ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers}
3639ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers
3739ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers}  // namespace mirror
3839ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers}  // namespace art
3939ebcb800aabedd0ffa6aa4aeac8aa4194c66e61Ian Rogers
40fc0e3219edc9a5bf81b166e82fd5db2796eb6a0dBrian Carlstrom#endif  // ART_RUNTIME_MIRROR_DEX_CACHE_INL_H_
41