1ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng/* 2ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * Copyright (C) 2009 The Android Open Source Project 3ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * 4ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * Licensed under the Apache License, Version 2.0 (the "License"); 5ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * you may not use this file except in compliance with the License. 6ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * You may obtain a copy of the License at 7ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * 8ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * http://www.apache.org/licenses/LICENSE-2.0 9ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * 10ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * Unless required by applicable law or agreed to in writing, software 11ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * distributed under the License is distributed on an "AS IS" BASIS, 12ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * See the License for the specific language governing permissions and 14ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * limitations under the License. 15ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng */ 16ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng 17ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng/* common includes */ 18ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng#include "Dalvik.h" 19ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng 20d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiroextern "C" { 21d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro 22ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng/* 23ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * Look up an interface on a class using the cache. 24ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * 25ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * This function used to be defined in mterp/c/header.c, but it is now used by 26ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * the JIT compiler as well so it is separated into its own header file to 27ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng * avoid potential out-of-sync changes in the future. 28ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng */ 29ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben ChengINLINE Method* dvmFindInterfaceMethodInCache(ClassObject* thisClass, 30ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng u4 methodIdx, const Method* method, DvmDex* methodClassDex) 31ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng{ 32ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng#define ATOMIC_CACHE_CALC \ 33ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng dvmInterpFindInterfaceMethod(thisClass, methodIdx, method, methodClassDex) 34ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng 35ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng return (Method*) ATOMIC_CACHE_LOOKUP(methodClassDex->pInterfaceCache, 36ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng DEX_INTERFACE_CACHE_SIZE, thisClass, methodIdx); 37ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng 38ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng#undef ATOMIC_CACHE_CALC 39ba4fc8bfc1bccae048403bd1cea3b869dca61dd7Ben Cheng} 40d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro 41d5c36b9040bd26a81219a7f399513526f9b46324Carl Shapiro} 42