Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[CVS ci] cgp_jit

11 views
Skip to first unread message

Leopold Toetsch

unread,
Feb 14, 2003, 8:30:14 AM2/14/03
to P6I
Ok, here is the hairy thing, discussed in the CGP thread.

hange in core.ops

This patch introduces the 1000th opcode, a asm("ret") for gcc/i386, a
noop else. This opcode is referenced directly as #2, so it should
better stay on the spot - and be documented :)

Changes in jit.c:

- The building of basic blocks now honors offsets in the fixup table.
This is e.g. necessary for the tricky t/syn/eval_3 test in imcc,
where a label is a jump target branched to from evaled code.

- Determination of normal vs JITted ops is a macro now. This allows
JIT/i386 to fully use JITted vtable functions with register
mappings.

Change in CGP core:

- for gcc the cur_opcode is kept in the %esi register. This speeds up
unoptimized cgp_core to almost the -O3 performance and is used to
call CGP code from JIT/i386.

JIT/i386:

- Use the CGP core for a seqence of normal (non JIT) ops. Thus the two
fastest run loops are combined to give the best perfomance.
- do register mapping for JITed vtable calls

And

- some tests for checking the control flow JIT <-> CGP <-> normal core

And finally
- docs/dev/jit_i386.dev a document describing the inyards of code
execution by means of an example.

Have fun,
leo

0 new messages