Changes: Christian Ullrich
Edwin Steiner
- $Id: codegen-common.h 4921 2006-05-15 14:24:36Z twisti $
+ $Id: codegen-common.h 5404 2006-09-07 13:29:05Z christian $
*/
struct superstart *superstarts; /* list of supers without patchers */
#endif
- u1 *dsegtop; /* pointer to top (end) of data area */
- s4 dsegsize; /* complete size of data area (bytes) */
+ dsegentry *dseg; /* chain of data segment entries */
s4 dseglen; /* used size of data area (bytes) */
/* data area grows from top to bottom */
s4 maxstack;
s4 maxlocals;
+ s4 stackframesize; /* stackframe size of this method */
};
-#if defined(__I386__) || defined(__X86_64__) || defined(ENABLE_INTRP) || defined(DISABLE_GC)
-typedef struct _methodtree_element methodtree_element;
+/* methodtree_element *********************************************************/
-struct _methodtree_element {
+typedef struct methodtree_element methodtree_element;
+
+struct methodtree_element {
u1 *startpc;
u1 *endpc;
};
-#endif
/* function prototypes ********************************************************/
void codegen_add_arithmeticexception_ref(codegendata *cd);
void codegen_add_arrayindexoutofboundsexception_ref(codegendata *cd, s4 reg);
void codegen_add_arraystoreexception_ref(codegendata *cd);
-void codegen_add_classcastexception_ref(codegendata *cd);
+void codegen_add_classcastexception_ref(codegendata *cd, s4 reg);
void codegen_add_nullpointerexception_ref(codegendata *cd);
void codegen_add_fillinstacktrace_ref(codegendata *cd);
s4 disp);
void codegen_insertmethod(u1 *startpc, u1 *endpc);
-u1 *codegen_findmethod(u1 *pc);
+u1 *codegen_get_pv_from_pc(u1 *pc);
+u1 *codegen_get_pv_from_pc_nocheck(u1 *pc);
void codegen_finish(jitdata *jd);
#endif
void codegen_start_native_call(u1 *datasp, u1 *pv, u1 *sp, u1 *ra);
-void codegen_finish_native_call(u1 *datasp);
+java_objectheader *codegen_finish_native_call(u1 *datasp);
u1 *createcompilerstub(methodinfo *m);
u1 *createnativestub(functionptr f, jitdata *jd, methoddesc *nmd);
void removecompilerstub(u1 *stub);
void removenativestub(u1 *stub);
+#if defined(NEW_VAR)
+s4 codegen_reg_of_var(u2 opcode, varinfo *v, s4 tempregnum);
+#else
s4 codegen_reg_of_var(registerdata *rd, u2 opcode, stackptr v, s4 tempregnum);
+#endif
+s4 codegen_reg_of_dst(jitdata *jd, instruction *iptr, s4 tempregnum);
#if defined(ENABLE_THREADS)
void codegen_threadcritrestart(codegendata *cd, int offset);
#endif
/* machine dependent functions */
-u1 *md_codegen_findmethod(u1 *ra);
+u1 *md_codegen_get_pv_from_pc(u1 *ra);
bool codegen(jitdata *jd);