14d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein/* 24d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * Copyright (C) 2010 The Android Open Source Project 34d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * 44d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * Licensed under the Apache License, Version 2.0 (the "License"); 54d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * you may not use this file except in compliance with the License. 64d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * You may obtain a copy of the License at 74d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * 84d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * http://www.apache.org/licenses/LICENSE-2.0 94d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * 104d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * Unless required by applicable law or agreed to in writing, software 114d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * distributed under the License is distributed on an "AS IS" BASIS, 124d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * See the License for the specific language governing permissions and 144d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * limitations under the License. 154d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein */ 164d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein 174d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein/* 184d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * dalvik.bytecode.OpcodeInfo 194d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * 204d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * This file mostly exists in its current form so that we don't have 214d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * to have duplicate definitions for things both in libcore and in 224d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * libdex. 234d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein */ 244d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein 254d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein#include "Dalvik.h" 264d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein#include "native/InternalNativePriv.h" 274d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein 284d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein/* 294d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein * public static native boolean isInvoke(int opcode); 304d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein */ 314d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornsteinstatic void Dalvik_dalvik_bytecode_OpcodeInfo_isInvoke(const u4* args, 324d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein JValue* pResult) 334d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein{ 34db0c9549818d9f6e508d26e45ff9d886802aa1daCarl Shapiro Opcode opcode = static_cast<Opcode>(args[0]); 35e485276c6ba778cafa373b3b5c867f84e91b0bfdDan Bornstein int flags = dexGetFlagsFromOpcode(opcode); 364d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein bool result = (flags & kInstrInvoke) != 0; 374d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein RETURN_BOOLEAN(result); 384d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein} 394d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein 404d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornsteinconst DalvikNativeMethod dvm_dalvik_bytecode_OpcodeInfo[] = { 414d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein { "isInvoke", "(I)Z", Dalvik_dalvik_bytecode_OpcodeInfo_isInvoke }, 424d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein { NULL, NULL, NULL }, 434d31eb383881b817fe7e68ea04d1049e8bc7c78aDan Bornstein}; 44