blob: 015c3dba7e361378177810b72f586cac9de26251 [file] [log] [blame]
/*
* Copyright (C) 2008 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/*
* Dalvik interpreter public definitions.
*/
#ifndef _DALVIK_INTERP_INTERP
#define _DALVIK_INTERP_INTERP
/*
* Interpreter entry point. Call here after setting up the interpreted
* stack (most code will want to get here via dvmCallMethod().)
*/
void dvmInterpret(Thread* thread, const Method* method, JValue* pResult);
/*
* Throw an exception for a problem detected by the verifier.
*
* This is called from the handler for the throw-verification-error
* instruction. "method" is the method currently being executed.
*/
void dvmThrowVerificationError(const Method* method, int kind, int ref);
/*
* One-time initialization and shutdown.
*/
bool dvmBreakpointStartup(void);
void dvmBreakpointShutdown(void);
/*
* Breakpoint implementation.
*/
void dvmInitBreakpoints();
void dvmAddBreakAddr(Method* method, unsigned int instrOffset);
void dvmClearBreakAddr(Method* method, unsigned int instrOffset);
bool dvmAddSingleStep(Thread* thread, int size, int depth);
void dvmClearSingleStep(Thread* thread);
#ifdef WITH_DEBUGGER
/*
* Recover the opcode that was replaced by a breakpoint.
*/
u1 dvmGetOriginalOpCode(const u2* addr);
/*
* Temporarily "undo" any breakpoints set in a specific method. Used
* during verification.
*
* Locks the breakpoint set, and leaves it locked.
*/
void dvmUndoBreakpoints(Method* method);
/*
* "Redo" the breakpoints cleared by a previous "undo", re-inserting the
* breakpoint opcodes and updating the "original opcode" values.
*
* Unlocks the breakpoint set, which must be held by a previous "undo".
*/
void dvmRedoBreakpoints(Method* method);
#endif
#endif /*_DALVIK_INTERP_INTERP*/