Authors: Christian Thalinger
- Changes:
+ Changes: Christian Ullrich
- $Id: codegen.inc.h 3655 2005-11-11 11:37:04Z twisti $
+ $Id: codegen.inc.h 3778 2005-11-23 22:36:14Z twisti $
*/
s4 *mcodeend; /* pointer to end of code area */
s4 mcodesize; /* complete size of code area (bytes) */
-#if defined(__I386__) || defined(__X86_64__) || defined(__INTRP__)
+#if defined(__I386__) || defined(__X86_64__) || defined(ENABLE_INTRP)
u1 *mcodeptr; /* code generation pointer */
#endif
-#if defined(__I386__) || defined(__MIPS__) || defined(__X86_64__)
+#if defined(__I386__) || defined(__MIPS__) || defined(__X86_64__) || defined(ENABLE_INTRP)
u1 *lastmcodeptr; /* last patcher position of basic block */
#endif
-#if defined(ENABLE_INTRP)
- u1 *last_compiled;
-#endif
-
u1 *dsegtop; /* pointer to top (end) of data area */
s4 dsegsize; /* complete size of data area (bytes) */
s4 dseglen; /* used size of data area (bytes) */
};
-#if defined(__I386__) || defined(__X86_64__) || defined(__INTRP__)
+#if defined(__I386__) || defined(__X86_64__) || defined(ENABLE_INTRP) || defined(DISABLE_GC)
typedef struct _methodtree_element methodtree_element;
struct _methodtree_element {
- functionptr startpc;
- functionptr endpc;
+ u1 *startpc;
+ u1 *endpc;
};
#endif
bool codegen(methodinfo *m, codegendata *cd, registerdata *rd);
void codegen_free(methodinfo *m, codegendata *cd);
void codegen_close(void);
-void codegen_insertmethod(functionptr startpc, functionptr endpc);
+void codegen_insertmethod(u1 *startpc, u1 *endpc);
-functionptr codegen_findmethod(functionptr pc);
+u1 *codegen_findmethod(u1 *pc);
#if defined(__I386__) || defined(__X86_64__)
void codegen_addreference(codegendata *cd, struct basicblock *target, void *branchptr);
void dseg_display(methodinfo *m, codegendata *cd);
-functionptr codegen_createnativestub(functionptr f, methodinfo *m);
+u1 *codegen_createnativestub(functionptr f, methodinfo *m);
void codegen_disassemble_nativestub(methodinfo *m, u1 *start, u1 *end);
-functionptr createcompilerstub(methodinfo *m);
-functionptr createnativestub(functionptr f, methodinfo *m, codegendata *cd,
- registerdata *rd, methoddesc *md);
+void codegen_start_native_call(u1 *datasp, u1 *pv, u1 *sp, u1 *ra);
+void codegen_finish_native_call(u1 *datasp);
+
+u1 *createcompilerstub(methodinfo *m);
+u1 *createnativestub(functionptr f, methodinfo *m, codegendata *cd,
+ registerdata *rd, methoddesc *md);
+
+void removecompilerstub(u1 *stub);
+void removenativestub(u1 *stub);
-void removecompilerstub(functionptr stub);
-void removenativestub(functionptr stub);
+/* machine dependent find method function */
+u1 *md_codegen_findmethod(u1 *ra);
#endif /* _CODEGEN_INC_H */