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