1/* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17/* 18 * Dalvik interpreter public definitions. 19 */ 20#ifndef _DALVIK_INTERP_INTERP 21#define _DALVIK_INTERP_INTERP 22 23/* 24 * Interpreter entry point. Call here after setting up the interpreted 25 * stack (most code will want to get here via dvmCallMethod().) 26 */ 27void dvmInterpret(Thread* thread, const Method* method, JValue* pResult); 28 29/* 30 * Throw an exception for a problem detected by the verifier. 31 * 32 * This is called from the handler for the throw-verification-error 33 * instruction. "method" is the method currently being executed. 34 */ 35void dvmThrowVerificationError(const Method* method, int kind, int ref); 36 37/* 38 * One-time initialization and shutdown. 39 */ 40bool dvmBreakpointStartup(void); 41void dvmBreakpointShutdown(void); 42 43/* 44 * Breakpoint implementation. 45 */ 46void dvmInitBreakpoints(); 47void dvmAddBreakAddr(Method* method, unsigned int instrOffset); 48void dvmClearBreakAddr(Method* method, unsigned int instrOffset); 49bool dvmAddSingleStep(Thread* thread, int size, int depth); 50void dvmClearSingleStep(Thread* thread); 51 52#ifdef WITH_DEBUGGER 53/* 54 * Recover the opcode that was replaced by a breakpoint. 55 */ 56u1 dvmGetOriginalOpCode(const u2* addr); 57 58/* 59 * Flush any breakpoints associated with methods in "clazz". 60 */ 61void dvmFlushBreakpoints(ClassObject* clazz); 62#endif 63 64#endif /*_DALVIK_INTERP_INTERP*/ 65