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