/* src/vm/jit/code.h - codeinfo struct for representing compiled code
- Copyright (C) 1996-2005, 2006 R. Grafl, A. Krall, C. Kruegel,
+ Copyright (C) 1996-2005, 2006, 2007 R. Grafl, A. Krall, C. Kruegel,
C. Oates, R. Obermaisser, M. Platter, M. Probst, S. Ring,
E. Steiner, C. Thalinger, D. Thuernbeck, P. Tomsich, C. Ullrich,
J. Wenninger, Institut f. Computersprachen - TU Wien
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.
- Contact: cacao@cacaojvm.org
-
- Authors: Edwin Steiner
- Christian Thalinger
-
- $Id$
-
*/
/* forward typedefs ***********************************************************/
-typedef struct codeinfo codeinfo;
-
#include "config.h"
#include "vm/types.h"
+#include "toolbox/list.h"
+
#include "vm/global.h"
-#include "vm/method.h"
+
#include "vm/jit/replace.h"
+#include "vmcore/method.h"
+
/* constants ******************************************************************/
u1 *entrypoint; /* machine code entry point */
s4 mcodelength; /* length of generated machine code */
+ /* patcher list */
+ list_t *patchers;
+
/* replacement */
#if defined(ENABLE_REPLACEMENT)
rplpoint *rplpoints; /* replacement points */
rplalloc *regalloc; /* register allocation info */
- u1 *replacementstubs; /* beginning of replacement stubs */
s4 rplpointcount; /* number of replacement points */
s4 globalcount; /* number of global allocations */
s4 regalloccount; /* number of total allocations */
s4 stackframesize; /* size of the stackframe in slots */
u1 savedintcount; /* number of callee saved int regs */
u1 savedfltcount; /* number of callee saved flt regs */
+# if defined(HAS_ADDRESS_REGISTER_FILE)
+ u1 savedadrcount; /* number of callee saved adr regs */
+# endif
u1 *savedmcode; /* saved code under patches */
-#endif /* defined(ENABLE_REPLACEMENT) */
+#endif
+#if defined(ENABLE_PROFILING)
u4 frequency; /* number of method invocations */
u4 *bbfrequency;
s8 cycles; /* number of cpu cycles */
+#endif
};
codeinfo *code_find_codeinfo_for_pc(u1 *pc);
+methodinfo *code_get_methodinfo_for_pv(u1 *pv);
+
#if defined(ENABLE_REPLACEMENT)
int code_get_sync_slot_count(codeinfo *code);
-int code_get_stack_frame_size(codeinfo *code);
#endif /* defined(ENABLE_REPLACEMENT) */
void code_free_code_of_method(methodinfo *m);