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 2661 2005-06-13 14:17:37Z twisti $
+ $Id: codegen.inc 2734 2005-06-17 13:01:06Z twisti $
*/
#include <assert.h>
#include <string.h>
+#include "config.h"
+#include "types.h"
+
#include "disass.h"
#include "mm/memory.h"
#endif
#include "vm/exceptions.h"
+#include "vm/method.h"
#include "vm/options.h"
#include "vm/statistics.h"
#include "vm/jit/codegen.inc.h"
+#include "vm/jit/jit.h"
#undef JWDEBUG_X86
*******************************************************************************/
-void codegen_init()
+void codegen_init(void)
{
#if defined(__I386__) || defined(__X86_64__)
/* this tree is global, not method specific */
*******************************************************************************/
-void codegen_close()
+void codegen_close(void)
{
/* TODO: release avl tree on i386 and x86_64 */
}
newstorage = DMNEW(u1, cd->dsegsize * 2);
- memcpy(newstorage + cd->dsegsize, cd->dsegtop - cd->dsegsize, cd->dsegsize);
-#if 0
- MFREE(cd->dsegtop - cd->dsegsize, u1, cd->dsegsize);
-#endif
+ MCOPY(newstorage + cd->dsegsize, cd->dsegtop - cd->dsegsize, u1,
+ cd->dsegsize);
cd->dsegtop = newstorage;
cd->dsegsize *= 2;
}
-#if !defined(__I386__)
+#if !defined(__I386__) && !defined(__POWERPC__)
static s4 dseg_adds8_increase(codegendata *cd, s8 value)
{
dseg_increase(cd);
}
+#if defined(__I386__) || defined(__X86_64__)
static void dseg_adddata(codegendata *cd, u1 *ptr)
{
dataref *dr;
dr->next = cd->datareferences;
cd->datareferences = dr;
}
+#endif
static void dseg_addlinenumbertablesize(codegendata *cd)
#if defined(STATISTICS)
if (opt_stat)
- count_nstub_len += m->mcodelength + cd->dseglen;
+ count_nstub_len += m->mcodelength;
#endif
/* release memory */
if (showdisassemble)
codegen_disassemble_nativestub(m, (s4 *) (ptrint) m->stubroutine,
- m->mcodelength);
+ m->mcodelength - cd->dseglen);
+
+ /* show data segment */
+
+ if (showddatasegment)
+ dseg_display(m, cd);
/* return stubroutine entry point */