memory. All functions writing values into the data area return the offset
relative the begin of the code area (start of procedure).
- $Id: codegen.inc 1463 2004-11-06 21:20:53Z motse $
+ $Id: codegen.inc 1466 2004-11-08 11:24:50Z twisti $
*/
if (useinlining && id) {
if (id->cumextablelength > 0) {
cd->exceptiontablelength = id->cumextablelength;
- cd->exceptiontable = MNEW(exceptiontable, id->cumextablelength + 1);
+ cd->exceptiontable = DMNEW(exceptiontable, id->cumextablelength + 1);
}
} else if (id && (id->method->exceptiontablelength >0)) {
cd->exceptiontablelength = m->exceptiontablelength;
- cd->exceptiontable = MNEW(exceptiontable, m->exceptiontablelength + 1);
+ cd->exceptiontable = DMNEW(exceptiontable, m->exceptiontablelength + 1);
}
if (id) {
void codegen_free(methodinfo *m, codegendata *cd)
{
if (cd) {
+#if 0
if (cd->exceptiontablelength) {
cd->exceptiontablelength = m->exceptiontablelength;
MFREE(cd->exceptiontable, exceptiontable, cd->exceptiontablelength + 1);
cd->exceptiontable = 0;
cd->exceptiontablelength = 0;
}
+#endif
if (cd->mcodebase) {
MFREE(cd->mcodebase, u1, cd->mcodesize);
Changes: Edwin Steiner
- $Id: jit.c 1456 2004-11-05 14:33:14Z twisti $
+ $Id: jit.c 1466 2004-11-08 11:24:50Z twisti $
*/
/* jit_compile *****************************************************************
- jit_compile, new version of compiler, translates one method to machine code
+ jit_compile, new version of compiler, translates one method to machine code
*******************************************************************************/
-static methodptr jit_compile_intern(methodinfo *m, codegendata *cd, registerdata *rd, loopdata *ld, t_inlining_globals *id);
+static methodptr jit_compile_intern(methodinfo *m, codegendata *cd,
+ registerdata *rd, loopdata *ld,
+ t_inlining_globals *id);
methodptr jit_compile(methodinfo *m)
{
jitrunning = true;
#endif
- /* mark start of dump memory area */
-
- dumpsize = dump_size();
-
/* measure time */
if (getcompilingtime)
compilingtime_start();
+ /* mark start of dump memory area */
+
+ dumpsize = dump_size();
+
/* allocate memory */
- cd = NEW(codegendata);
- rd = NEW(registerdata);
- ld = NEW(loopdata);
- id = NEW(t_inlining_globals);
+ cd = DNEW(codegendata);
+ rd = DNEW(registerdata);
+ ld = DNEW(loopdata);
+ id = DNEW(t_inlining_globals);
/* RTA static analysis must be called before inlining */
if (opt_rt)
dump_release(dumpsize);
- /* free memory */
-
- FREE(cd, codegendata);
- FREE(rd, registerdata);
- FREE(ld, loopdata);
- FREE(id, t_inlining_globals);
-
/* measure time */
if (getcompilingtime)
}
-static methodptr jit_compile_intern(methodinfo *m, codegendata *cd, registerdata *rd, loopdata *ld, t_inlining_globals *id)
+/* jit_compile_intern **********************************************************
+
+ Static internal function which does the actual compilation.
+
+*******************************************************************************/
+
+static methodptr jit_compile_intern(methodinfo *m, codegendata *cd,
+ registerdata *rd, loopdata *ld,
+ t_inlining_globals *id)
{
/* print log message for compiled method */
/* call the compiler passes ***********************************************/
- EXTABLEN
-
if (compileverbose)
log_message_method("Parsing: ", m);
Changes: Stefan Ring
Christian Thalinger
- $Id: reg.inc 1459 2004-11-05 16:23:02Z twisti $
+ $Id: reg.inc 1466 2004-11-08 11:24:50Z twisti $
*/
}
}
- rd->argintregs = MNEW(s4, rd->intreg_argnum);
- rd->tmpintregs = MNEW(s4, rd->tmpintregcnt);
- rd->savintregs = MNEW(s4, rd->savintregcnt);
- rd->freeargintregs = MNEW(s4, rd->intreg_argnum);
- rd->freetmpintregs = MNEW(s4, rd->tmpintregcnt);
- rd->freesavintregs = MNEW(s4, rd->savintregcnt);
+ rd->argintregs = DMNEW(s4, rd->intreg_argnum);
+ rd->tmpintregs = DMNEW(s4, rd->tmpintregcnt);
+ rd->savintregs = DMNEW(s4, rd->savintregcnt);
+ rd->freeargintregs = DMNEW(s4, rd->intreg_argnum);
+ rd->freetmpintregs = DMNEW(s4, rd->tmpintregcnt);
+ rd->freesavintregs = DMNEW(s4, rd->savintregcnt);
#ifdef USETWOREGS
- rd->secondregs = MNEW(s4, rd->intregsnum);
+ rd->secondregs = DMNEW(s4, rd->intregsnum);
#endif
rd->intreg_argnum = 0;
}
}
- rd->argfltregs = MNEW(s4, rd->fltreg_argnum);
- rd->tmpfltregs = MNEW(s4, rd->tmpfltregcnt);
- rd->savfltregs = MNEW(s4, rd->savfltregcnt);
- rd->freeargfltregs = MNEW(s4, rd->fltreg_argnum);
- rd->freetmpfltregs = MNEW(s4, rd->tmpfltregcnt);
- rd->freesavfltregs = MNEW(s4, rd->savfltregcnt);
+ rd->argfltregs = DMNEW(s4, rd->fltreg_argnum);
+ rd->tmpfltregs = DMNEW(s4, rd->tmpfltregcnt);
+ rd->savfltregs = DMNEW(s4, rd->savfltregcnt);
+ rd->freeargfltregs = DMNEW(s4, rd->fltreg_argnum);
+ rd->freetmpfltregs = DMNEW(s4, rd->tmpfltregcnt);
+ rd->freesavfltregs = DMNEW(s4, rd->savfltregcnt);
rd->fltreg_argnum = 0;
rd->argfltreguse = 0;
}
- rd->freemem = MNEW(s4, id->cummaxstack);
- rd->locals = MNEW(varinfo5, id->cumlocals);
- rd->interfaces = MNEW(varinfo5, id->cummaxstack);
+ rd->freemem = DMNEW(s4, id->cummaxstack);
+ rd->locals = DMNEW(varinfo5, id->cumlocals);
+ rd->interfaces = DMNEW(varinfo5, id->cummaxstack);
for (v = rd->locals, i = id->cumlocals; i > 0; v++, i--) {
v[0][TYPE_INT].type = -1;
void reg_free(methodinfo *m, registerdata *rd)
{
- if (rd->argintregs) MFREE(rd->argintregs, s4, rd->intreg_argnum);
- if (rd->argfltregs) MFREE(rd->argfltregs, s4, rd->fltreg_argnum);
- if (rd->tmpintregs) MFREE(rd->tmpintregs, s4, rd->tmpintregcnt);
- if (rd->savintregs) MFREE(rd->savintregs, s4, rd->savintregcnt);
- if (rd->tmpfltregs) MFREE(rd->tmpfltregs, s4, rd->tmpfltregcnt);
- if (rd->savfltregs) MFREE(rd->savfltregs, s4, rd->savfltregcnt);
-
- if (rd->freeargintregs) MFREE(rd->freeargintregs, s4, rd->intreg_argnum);
- if (rd->freeargfltregs) MFREE(rd->freeargfltregs, s4, rd->fltreg_argnum);
- if (rd->freetmpintregs) MFREE(rd->freetmpintregs, s4, rd->tmpintregcnt);
- if (rd->freesavintregs) MFREE(rd->freesavintregs, s4, rd->savintregcnt);
- if (rd->freetmpfltregs) MFREE(rd->freetmpfltregs, s4, rd->tmpfltregcnt);
- if (rd->freesavfltregs) MFREE(rd->freesavfltregs, s4, rd->savfltregcnt);
-
-#ifdef USETWOREGS
- if (rd->secondregs) MFREE(rd->secondregs, s4, rd->intregsnum);
-#endif
-
- if (rd->freemem) MFREE(rd->freemem, s4, m->maxstack);
- if (rd->locals) MFREE(rd->locals, varinfo5, m->maxlocals);
- if (rd->interfaces) MFREE(rd->interfaces, varinfo5, m->maxstack);
+ /* void */
}
Authors: Andreas Krall
Christian Thalinger
- $Id: codegen.c 1451 2004-11-05 14:14:15Z twisti $
+ $Id: codegen.c 1466 2004-11-08 11:24:50Z twisti $
*/
};
-/* include independent code generation stuff -- include after register */
-/* descriptions to avoid extern definitions */
+/*******************************************************************************
+
+ include independent code generation stuff -- include after register
+ descriptions to avoid extern definitions
+
+*******************************************************************************/
#include "jit/codegen.inc"
#include "jit/reg.inc"
u1 *createcompilerstub(methodinfo *m)
{
u1 *s = CNEW(u1, COMPSTUBSIZE); /* memory to hold the stub */
- codegendata *cd = NEW(codegendata);
+ codegendata *cd;
+ s4 dumpsize;
+
+ /* mark start of dump memory area */
+
+ dumpsize = dump_size();
- /* allocate code and data memory, with using inline stuff */
- //codegen_setup(m, cd, NULL);
+ cd = DNEW(codegendata);
cd->mcodeptr = s;
/* code for the stub */
count_cstub_len += COMPSTUBSIZE;
#endif
- /* free code and data memory */
- //codegen_close(m, cd);
+ /* release dump area */
- FREE(cd, codegendata);
+ dump_release(dumpsize);
return s;
}
{
u1 *s = CNEW(u1, NATIVESTUBSIZE); /* memory to hold the stub */
s4 stackframesize; /* size of stackframe if needed */
- codegendata *cd = NEW(codegendata);
- registerdata *rd = NEW(registerdata);
- t_inlining_globals *id = NEW(t_inlining_globals);
+ codegendata *cd;
+ registerdata *rd;
+ t_inlining_globals *id;
+ s4 dumpsize;
+
+ /* mark start of dump memory area */
+
+ dumpsize = dump_size();
+
+ cd = DNEW(codegendata);
+ rd = DNEW(registerdata);
+ id = DNEW(t_inlining_globals);
/* setup registers before using it */
+
inlining_setup(m, id);
reg_setup(m, rd, id);
count_nstub_len += NATIVESTUBSIZE;
#endif
- FREE(cd, codegendata);
- FREE(rd, registerdata);
+ /* release dump area */
+
+ dump_release(dumpsize);
return s;
}
memory. All functions writing values into the data area return the offset
relative the begin of the code area (start of procedure).
- $Id: codegen.inc 1463 2004-11-06 21:20:53Z motse $
+ $Id: codegen.inc 1466 2004-11-08 11:24:50Z twisti $
*/
if (useinlining && id) {
if (id->cumextablelength > 0) {
cd->exceptiontablelength = id->cumextablelength;
- cd->exceptiontable = MNEW(exceptiontable, id->cumextablelength + 1);
+ cd->exceptiontable = DMNEW(exceptiontable, id->cumextablelength + 1);
}
} else if (id && (id->method->exceptiontablelength >0)) {
cd->exceptiontablelength = m->exceptiontablelength;
- cd->exceptiontable = MNEW(exceptiontable, m->exceptiontablelength + 1);
+ cd->exceptiontable = DMNEW(exceptiontable, m->exceptiontablelength + 1);
}
if (id) {
void codegen_free(methodinfo *m, codegendata *cd)
{
if (cd) {
+#if 0
if (cd->exceptiontablelength) {
cd->exceptiontablelength = m->exceptiontablelength;
MFREE(cd->exceptiontable, exceptiontable, cd->exceptiontablelength + 1);
cd->exceptiontable = 0;
cd->exceptiontablelength = 0;
}
+#endif
if (cd->mcodebase) {
MFREE(cd->mcodebase, u1, cd->mcodesize);
Changes: Edwin Steiner
- $Id: jit.c 1456 2004-11-05 14:33:14Z twisti $
+ $Id: jit.c 1466 2004-11-08 11:24:50Z twisti $
*/
/* jit_compile *****************************************************************
- jit_compile, new version of compiler, translates one method to machine code
+ jit_compile, new version of compiler, translates one method to machine code
*******************************************************************************/
-static methodptr jit_compile_intern(methodinfo *m, codegendata *cd, registerdata *rd, loopdata *ld, t_inlining_globals *id);
+static methodptr jit_compile_intern(methodinfo *m, codegendata *cd,
+ registerdata *rd, loopdata *ld,
+ t_inlining_globals *id);
methodptr jit_compile(methodinfo *m)
{
jitrunning = true;
#endif
- /* mark start of dump memory area */
-
- dumpsize = dump_size();
-
/* measure time */
if (getcompilingtime)
compilingtime_start();
+ /* mark start of dump memory area */
+
+ dumpsize = dump_size();
+
/* allocate memory */
- cd = NEW(codegendata);
- rd = NEW(registerdata);
- ld = NEW(loopdata);
- id = NEW(t_inlining_globals);
+ cd = DNEW(codegendata);
+ rd = DNEW(registerdata);
+ ld = DNEW(loopdata);
+ id = DNEW(t_inlining_globals);
/* RTA static analysis must be called before inlining */
if (opt_rt)
dump_release(dumpsize);
- /* free memory */
-
- FREE(cd, codegendata);
- FREE(rd, registerdata);
- FREE(ld, loopdata);
- FREE(id, t_inlining_globals);
-
/* measure time */
if (getcompilingtime)
}
-static methodptr jit_compile_intern(methodinfo *m, codegendata *cd, registerdata *rd, loopdata *ld, t_inlining_globals *id)
+/* jit_compile_intern **********************************************************
+
+ Static internal function which does the actual compilation.
+
+*******************************************************************************/
+
+static methodptr jit_compile_intern(methodinfo *m, codegendata *cd,
+ registerdata *rd, loopdata *ld,
+ t_inlining_globals *id)
{
/* print log message for compiled method */
/* call the compiler passes ***********************************************/
- EXTABLEN
-
if (compileverbose)
log_message_method("Parsing: ", m);
Changes: Stefan Ring
Christian Thalinger
- $Id: reg.inc 1459 2004-11-05 16:23:02Z twisti $
+ $Id: reg.inc 1466 2004-11-08 11:24:50Z twisti $
*/
}
}
- rd->argintregs = MNEW(s4, rd->intreg_argnum);
- rd->tmpintregs = MNEW(s4, rd->tmpintregcnt);
- rd->savintregs = MNEW(s4, rd->savintregcnt);
- rd->freeargintregs = MNEW(s4, rd->intreg_argnum);
- rd->freetmpintregs = MNEW(s4, rd->tmpintregcnt);
- rd->freesavintregs = MNEW(s4, rd->savintregcnt);
+ rd->argintregs = DMNEW(s4, rd->intreg_argnum);
+ rd->tmpintregs = DMNEW(s4, rd->tmpintregcnt);
+ rd->savintregs = DMNEW(s4, rd->savintregcnt);
+ rd->freeargintregs = DMNEW(s4, rd->intreg_argnum);
+ rd->freetmpintregs = DMNEW(s4, rd->tmpintregcnt);
+ rd->freesavintregs = DMNEW(s4, rd->savintregcnt);
#ifdef USETWOREGS
- rd->secondregs = MNEW(s4, rd->intregsnum);
+ rd->secondregs = DMNEW(s4, rd->intregsnum);
#endif
rd->intreg_argnum = 0;
}
}
- rd->argfltregs = MNEW(s4, rd->fltreg_argnum);
- rd->tmpfltregs = MNEW(s4, rd->tmpfltregcnt);
- rd->savfltregs = MNEW(s4, rd->savfltregcnt);
- rd->freeargfltregs = MNEW(s4, rd->fltreg_argnum);
- rd->freetmpfltregs = MNEW(s4, rd->tmpfltregcnt);
- rd->freesavfltregs = MNEW(s4, rd->savfltregcnt);
+ rd->argfltregs = DMNEW(s4, rd->fltreg_argnum);
+ rd->tmpfltregs = DMNEW(s4, rd->tmpfltregcnt);
+ rd->savfltregs = DMNEW(s4, rd->savfltregcnt);
+ rd->freeargfltregs = DMNEW(s4, rd->fltreg_argnum);
+ rd->freetmpfltregs = DMNEW(s4, rd->tmpfltregcnt);
+ rd->freesavfltregs = DMNEW(s4, rd->savfltregcnt);
rd->fltreg_argnum = 0;
rd->argfltreguse = 0;
}
- rd->freemem = MNEW(s4, id->cummaxstack);
- rd->locals = MNEW(varinfo5, id->cumlocals);
- rd->interfaces = MNEW(varinfo5, id->cummaxstack);
+ rd->freemem = DMNEW(s4, id->cummaxstack);
+ rd->locals = DMNEW(varinfo5, id->cumlocals);
+ rd->interfaces = DMNEW(varinfo5, id->cummaxstack);
for (v = rd->locals, i = id->cumlocals; i > 0; v++, i--) {
v[0][TYPE_INT].type = -1;
void reg_free(methodinfo *m, registerdata *rd)
{
- if (rd->argintregs) MFREE(rd->argintregs, s4, rd->intreg_argnum);
- if (rd->argfltregs) MFREE(rd->argfltregs, s4, rd->fltreg_argnum);
- if (rd->tmpintregs) MFREE(rd->tmpintregs, s4, rd->tmpintregcnt);
- if (rd->savintregs) MFREE(rd->savintregs, s4, rd->savintregcnt);
- if (rd->tmpfltregs) MFREE(rd->tmpfltregs, s4, rd->tmpfltregcnt);
- if (rd->savfltregs) MFREE(rd->savfltregs, s4, rd->savfltregcnt);
-
- if (rd->freeargintregs) MFREE(rd->freeargintregs, s4, rd->intreg_argnum);
- if (rd->freeargfltregs) MFREE(rd->freeargfltregs, s4, rd->fltreg_argnum);
- if (rd->freetmpintregs) MFREE(rd->freetmpintregs, s4, rd->tmpintregcnt);
- if (rd->freesavintregs) MFREE(rd->freesavintregs, s4, rd->savintregcnt);
- if (rd->freetmpfltregs) MFREE(rd->freetmpfltregs, s4, rd->tmpfltregcnt);
- if (rd->freesavfltregs) MFREE(rd->freesavfltregs, s4, rd->savfltregcnt);
-
-#ifdef USETWOREGS
- if (rd->secondregs) MFREE(rd->secondregs, s4, rd->intregsnum);
-#endif
-
- if (rd->freemem) MFREE(rd->freemem, s4, m->maxstack);
- if (rd->locals) MFREE(rd->locals, varinfo5, m->maxlocals);
- if (rd->interfaces) MFREE(rd->interfaces, varinfo5, m->maxstack);
+ /* void */
}
Authors: Andreas Krall
Christian Thalinger
- $Id: codegen.c 1451 2004-11-05 14:14:15Z twisti $
+ $Id: codegen.c 1466 2004-11-08 11:24:50Z twisti $
*/
};
-/* include independent code generation stuff -- include after register */
-/* descriptions to avoid extern definitions */
+/*******************************************************************************
+
+ include independent code generation stuff -- include after register
+ descriptions to avoid extern definitions
+
+*******************************************************************************/
#include "jit/codegen.inc"
#include "jit/reg.inc"
u1 *createcompilerstub(methodinfo *m)
{
u1 *s = CNEW(u1, COMPSTUBSIZE); /* memory to hold the stub */
- codegendata *cd = NEW(codegendata);
+ codegendata *cd;
+ s4 dumpsize;
+
+ /* mark start of dump memory area */
+
+ dumpsize = dump_size();
- /* allocate code and data memory, with using inline stuff */
- //codegen_setup(m, cd, NULL);
+ cd = DNEW(codegendata);
cd->mcodeptr = s;
/* code for the stub */
count_cstub_len += COMPSTUBSIZE;
#endif
- /* free code and data memory */
- //codegen_close(m, cd);
+ /* release dump area */
- FREE(cd, codegendata);
+ dump_release(dumpsize);
return s;
}
{
u1 *s = CNEW(u1, NATIVESTUBSIZE); /* memory to hold the stub */
s4 stackframesize; /* size of stackframe if needed */
- codegendata *cd = NEW(codegendata);
- registerdata *rd = NEW(registerdata);
- t_inlining_globals *id = NEW(t_inlining_globals);
+ codegendata *cd;
+ registerdata *rd;
+ t_inlining_globals *id;
+ s4 dumpsize;
+
+ /* mark start of dump memory area */
+
+ dumpsize = dump_size();
+
+ cd = DNEW(codegendata);
+ rd = DNEW(registerdata);
+ id = DNEW(t_inlining_globals);
/* setup registers before using it */
+
inlining_setup(m, id);
reg_setup(m, rd, id);
count_nstub_len += NATIVESTUBSIZE;
#endif
- FREE(cd, codegendata);
- FREE(rd, registerdata);
+ /* release dump area */
+
+ dump_release(dumpsize);
return s;
}