* gen_inst: Use lastmcodeptr instead of last_compiled.
[cacao.git] / src / vm / jit / codegen.inc.h
index f1b2c09e31440aee68523b6d547aa82d7eda3a51..4cdeb48005d0379aa11b4be27a026ac53ef577a2 100644 (file)
@@ -26,9 +26,9 @@
 
    Authors: Christian Thalinger
 
-   Changes:
+   Changes: Christian Ullrich
 
-   $Id: codegen.inc.h 3217 2005-09-19 13:11:24Z twisti $
+   $Id: codegen.inc.h 3778 2005-11-23 22:36:14Z twisti $
 
 */
 
@@ -94,12 +94,12 @@ struct codegendata {
        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(ENABLE_INTRP)
-       u1             *last_compiled;
+#if defined(__I386__) || defined(__MIPS__) || defined(__X86_64__) || defined(ENABLE_INTRP)
+       u1             *lastmcodeptr;   /* last patcher position of basic block   */
 #endif
 
        u1             *dsegtop;        /* pointer to top (end) of data area      */
@@ -110,7 +110,6 @@ struct codegendata {
        jumpref        *jumpreferences; /* list of jumptable target addresses     */
        dataref        *datareferences; /* list of data segment references        */
        branchref      *xboundrefs;     /* list of bound check branches           */
-       branchref      *xcheckarefs;    /* list of array size check branches      */
        branchref      *xnullrefs;      /* list of null check branches            */
        branchref      *xcastrefs;      /* list of cast check branches            */
        branchref      *xstorerefs;     /* list of array store check branches     */
@@ -181,12 +180,12 @@ struct linenumberref {
 };
 
 
-#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
 
@@ -195,12 +194,12 @@ struct _methodtree_element {
 
 void codegen_init(void);
 void codegen_setup(methodinfo *m, codegendata *cd, t_inlining_globals *e);
-void codegen(methodinfo *m, codegendata *cd, registerdata *rd);
+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);
@@ -208,15 +207,21 @@ void codegen_addreference(codegendata *cd, struct basicblock *target, void *bran
 
 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);
 
-void removecompilerstub(functionptr stub);
-void removenativestub(functionptr stub);
+u1 *createcompilerstub(methodinfo *m);
+u1 *createnativestub(functionptr f, methodinfo *m, codegendata *cd,
+                                        registerdata *rd, methoddesc *md);
+
+void removecompilerstub(u1 *stub);
+void removenativestub(u1 *stub);
+
+/* machine dependent find method function */
+u1 *md_codegen_findmethod(u1 *ra);
 
 #endif /* _CODEGEN_INC_H */