|
|
|
|
|
|
|
2004-06-25 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* tools/gen-apply.c: fix a crash in gen-apply under x86-64.
|
|
|
|
|
|
|
|
* jit/jit-apply-func.h, jit/jit-apply-x86-64.h, tools/gen-apply.c:
|
|
|
|
write an x86-64 assembly version of "__builtin_apply", because
|
|
|
|
the version inside gcc has an unusable register ordering.
|
|
|
|
|
|
|
|
2004-06-24 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c, jit/jit-rules-arm.h, jit/jit-rules-interp.c,
|
|
|
|
jit/jit-rules-interp.h, jit/jit-rules-x86.h, jit/jit-rules.h:
|
|
|
|
use separate JIT_REG_xxx flags for float32, float64, and nfloat
|
|
|
|
because some platforms need to put these values in different
|
|
|
|
types of registers (e.g. x86-64).
|
|
|
|
|
|
|
|
2004-06-22 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-insn.c: properly set the "may_throw" flag for opcodes
|
|
|
|
that throw exceptions and which are also supported by the back end.
|
|
|
|
|
|
|
|
2004-06-21 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.c, jit/jit-rules-x86.sel: move the code
|
|
|
|
for loading/storing small structures into a central location.
|
|
|
|
|
|
|
|
2004-06-18 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-dump.c, jit/jit-reg-alloc.c, jit/jit-rules-arm.c,
|
|
|
|
jit/jit-rules-arm.h, jit/jit-rules-x86.c, jit/jit-rules-x86.h,
|
|
|
|
jit/jit-rules-x86.sel, jit/jit-rules.c, jit/jit-rules.h,
|
|
|
|
tests/param.pas: rewrite the x86 and ARM parameter handling
|
|
|
|
routines to centralise the code and fix several bugs; add new
|
|
|
|
tests for fastcall and stdcall conventions.
|
|
|
|
|
|
|
|
2004-06-17 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c (_jit_regs_set_outgoing): pass 64-bit "fastcall"
|
|
|
|
parameters in ECX:EDX, not in ECX:EBX.
|
|
|
|
|
|
|
|
* tools/gen-apply.c: allow floating-point values to be passed
|
|
|
|
in "fastcall" registers.
|
|
|
|
|
|
|
|
2004-06-16 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* tools/gen-sel-parser.y: add a missing semi-colon.
|
|
|
|
|
|
|
|
2004-06-14 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* dpas/dpas-internal.h, dpas/dpas-parser.y, dpas/dpas-scanner.l,
|
|
|
|
jit/jit-rules-x86.c, jit/jit-rules-x86.sel, tests/Makefile.am,
|
|
|
|
tests/param.pas, tools/gen-apply.c: add some test cases for
|
|
|
|
parameter passing; fix fastcall/stdcall conventions for x86.
|
|
|
|
|
|
|
|
* jit/jit-rules-arm.h, jit/jit-rules-arm.sel, jit/jit-rules-x86.h,
|
|
|
|
jit/jit-rules-x86.sel, tools/gen-sel-parser.y: enable register
|
|
|
|
allocation for 64-bit values under x86 and ARM; expand some
|
|
|
|
64-bit opcodes in the instruction selectors.
|
|
|
|
|
|
|
|
2004-06-12 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-insn.c, jit/jit-rules-x86.c, jit/jit-rules-x86.sel:
|
|
|
|
implement or stub missing x86 instruction selection rules.
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, include/jit/jit-opcode.h,
|
|
|
|
include/jit/jit-plus.h, jit/jit-function.c, jit/jit-insn.c,
|
|
|
|
jit/jit-interp.c, jit/jit-opcode.c, jit/jit-rules-interp.c,
|
|
|
|
jitplus/jit-plus-function.cpp: add the "outgoing_frame_posn"
|
|
|
|
instruction, to support tail calls.
|
|
|
|
|
|
|
|
2004-06-11 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* doc/libjit.texi, jit/jit-insn.c, jit/jit-internal.h,
|
|
|
|
jit/jit-reg-alloc.c, jit/jit-rules-arm.c, jit/jit-rules-arm.sel,
|
|
|
|
jit/jit-rules-interp.c, jit/jit-rules-x86.c, jit/jit-rules-x86.sel,
|
|
|
|
jit/jit-rules.h, jit/jit-value.c, tutorial/Makefile.am,
|
|
|
|
tutorial/t2.c, tutorial/t5.c: implement tail calls from a
|
|
|
|
function to itself.
|
|
|
|
|
|
|
|
* jit/jit-function.c, jit/jit-reg-alloc.c, jit/jit-rules-arm.c,
|
|
|
|
jit/jit-rules-interp.c, jit/jit-rules-x86.c, jit/jit-rules.h:
|
|
|
|
implement global register allocation for parameters in stack slots.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.c, jit/jit-rules-x86.sel, jit/jit-rules.h:
|
|
|
|
optimize the x86 function epilog when we are certain that the
|
|
|
|
stack height doesn't change between entry and exit (i.e. the
|
|
|
|
function is a leaf and there are no alloca's).
|
|
|
|
|
|
|
|
2004-06-10 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-apply-arm.c, jit/jit-gen-arm.c, jit/jit-gen-arm.h,
|
|
|
|
jit/jit-rules-arm.c, jit/jit-rules-arm.h, jit/jit-rules-arm.sel,
|
|
|
|
tools/gen-sel-parser.y: redesign the ARM code generation macros
|
|
|
|
so that they have stronger protection against buffer overruns.
|
|
|
|
|
|
|
|
* jit/jit-rules-arm.sel: flush the constant pool after unconditional
|
|
|
|
branches, to try to minimize the probability that the pool will
|
|
|
|
be flushed in the middle of a loop body.
|
|
|
|
|
|
|
|
* jit/jit-dump.c: dump the hex address of external functions,
|
|
|
|
to aid with debugging native disassembly dumps.
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, include/jit/jit-opcode.h,
|
|
|
|
include/jit/jit-plus.h, jit/jit-insn.c, jit/jit-internal.h,
|
|
|
|
jit/jit-interp.c, jit/jit-opcode.c, jit/jit-rules-arm.c,
|
|
|
|
jit/jit-rules-arm.sel, jitplus/jit-plus-function.cpp:
|
|
|
|
add support for outgoing parameter areas, which should reduce
|
|
|
|
the overhead of function calls that involve stacked arguments
|
|
|
|
on non-x86 platforms; use parameter areas in the ARM back end.
|
|
|
|
|
|
|
|
* include/jit/jit-plus.h, include/jit/jit-value.h, jit/jit-insn.c,
|
|
|
|
jit/jit-internal.h, jit/jit-reg-alloc.c, jit/jit-rules-x86.c,
|
|
|
|
jit/jit-value.c: don't over-allocate x86 stack frames if
|
|
|
|
EBX, ESI, and EDI don't need to be saved; don't perform global
|
|
|
|
register allocation on stacked parameters because it confuses
|
|
|
|
the register spill logic.
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c (_jit_regs_load_value): avoid unnecessary
|
|
|
|
spills if a temporary value won't be used again in the current block.
|
|
|
|
|
|
|
|
2004-06-09 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-rules-arm.c (flush_constants): update the instruction
|
|
|
|
location after flushing the constant table.
|
|
|
|
|
|
|
|
* jit/jit-gen-arm.h: fix some bugs in the encoding of floating-point
|
|
|
|
load and store instructions.
|
|
|
|
|
|
|
|
* jit/jit-gen-arm.c (_arm_alu_reg_imm): forgot to update the
|
|
|
|
instruction pointer when loading the immediate value.
|
|
|
|
|
|
|
|
* jit/jit-gen-arm.c: optimize the use of rotated immediate values.
|
|
|
|
|
|
|
|
* jit/jit-rules-arm.c (_jit_gen_load_value): use ARM register pairs
|
|
|
|
properly for "long" and "float64" values.
|
|
|
|
|
|
|
|
2004-06-08 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/Makefile.am, jit/jit-cpuid-x86.c, jit/jit-cpuid-x86.h:
|
|
|
|
add an API for querying the x86 "cpuid" information.
|
|
|
|
|
|
|
|
* include/jit/jit-opcode.h, jit/jit-interp.c, jit/jit-opcode.c:
|
|
|
|
remove obsolete opcodes which violate "_jit_load_opcode"'s rules.
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c, jit/jit-rules-x86.c, jit/jit-rules-x86.sel:
|
|
|
|
more x86 instruction selection rules.
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c (_jit_regs_set_outgoing): implement
|
|
|
|
missing function.
|
|
|
|
|
|
|
|
* jit/jit-gen-arm.h (arm_call): use a more efficient form of
|
|
|
|
call for offsets beyond the simple target range.
|
|
|
|
|
|
|
|
* jit/jit-rules-arm.sel, tools/gen-sel-parser.y,
|
|
|
|
tools/gen-sel-scanner.l: introduce conditional rules into "gen-sel"
|
|
|
|
so that we can disable certain rules on ARM platforms that lack
|
|
|
|
floating-point support.
|
|
|
|
|
|
|
|
* jit/jit-rules-arm.c (_jit_gen_spill_reg): spill properly to
|
|
|
|
global registers for ARM.
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c, jit/jit-rules-arm.c, jit/jit-rules-arm.sel,
|
|
|
|
jit/jit-rules-x86.sel: minor register assignment bugs.
|
|
|
|
|
|
|
|
* jit/jit-rules-arm.c: ARM parameters cannot be split between
|
|
|
|
registers and the stack.
|
|
|
|
|
|
|
|
* jit/jit-gen-arm.c, jit/jit-gen-arm.h, jit/jit-rules-arm.c,
|
|
|
|
jit/jit-rules-arm.h, jit/jit-rules-arm.sel: implement a
|
|
|
|
constant pool for ARM, which gets complicated constants out
|
|
|
|
of the main stream of execution.
|
|
|
|
|
|
|
|
2004-06-08 Miroslaw Dobrzanski-Neumann <mne@mosaic-ag.com>
|
|
|
|
|
|
|
|
* jit/jit-alloc.c: fix ROUND_END_PTR so that it adds the size
|
|
|
|
after casting to jit_nuint.
|
|
|
|
|
|
|
|
2004-06-07 Thong Nguyen <tim@veridicus.com>
|
|
|
|
|
|
|
|
* configure.in, jit/jit-insn.c: add "_setjmp" to the list of
|
|
|
|
names to try to work around the "setjmp" macro (needed for Win32).
|
|
|
|
|
|
|
|
2004-06-07 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* tools/gen-apply.c: gen-apply fixes for Alpha platforms.
|
|
|
|
|
|
|
|
* jit/jit-interp.c: alignment problem with "push_const_float32"
|
|
|
|
on 64-bit platforms.
|
|
|
|
|
|
|
|
* jit/jit-intrinsic.c: work around a SIGFPE for sqrt(-1) on Alpha;
|
|
|
|
it should return NaN instead.
|
|
|
|
|
|
|
|
* jit/jit-value.c: fix a warning.
|
|
|
|
|
|
|
|
* configure.in, jit/jit-insn.c: use "sigsetjmp" instead of
|
|
|
|
"setjmp", because "setjmp" may be a macro on some systems.
|
|
|
|
|
|
|
|
* jit-gen-arm.h: add floating-point instruction macros.
|
|
|
|
|
|
|
|
* jit/jit-gen-arm.h, jit/jit-rules-arm.c, jit/jit-rules-arm.h,
|
|
|
|
jit/jit-rules-arm.sel: expand floating-point instructions for ARM.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.c: fix misnaming of jit_type_get_abi,
|
|
|
|
jit_abi_stdcall, and jit_abi_fastcall.
|
|
|
|
|
|
|
|
* tools/gen-apply-macosx.h, tools/gen-apply.c: bypass the
|
|
|
|
auto-detection logic in gen-apply under MacOSX because
|
|
|
|
it doesn't work with Apple's version of gcc.
|
|
|
|
|
|
|
|
* tools/gen-apply.c: gen-apply fix for ia64.
|
|
|
|
|
|
|
|
* jit/jit-alloc.c (jit_flush_exec): warning fix for ia64.
|
|
|
|
|
|
|
|
2004-06-06 Miroslaw Dobrzanski-Neumann <mne@mosaic-ag.com>
|
|
|
|
|
|
|
|
* jit/jit-alloc.c (jit_flush_exec): flush cache lines properly
|
|
|
|
if the start is not on a line boundary.
|
|
|
|
|
|
|
|
2004-06-06 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c, jit/jit-reg-alloc.h, jit/jit-rules-arm.c,
|
|
|
|
jit/jit-rules-arm.sel, jit/jit-rules-x86.c, jit/jit-rules-x86.sel:
|
|
|
|
add some more instructions to the ARM back end; split some x86
|
|
|
|
back end code out into common code for ARM to use as well.
|
|
|
|
|
|
|
|
2004-06-02 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-function.c, jit/jit-insn.c, jit/jit-internal.h,
|
|
|
|
jit/jit-reg-alloc.c, jit/jit-reg-alloc.h, jit/jit-rules-arm.c,
|
|
|
|
jit/jit-rules-arm.h, jit/jit-rules-interp.c, jit/jit-rules-interp.h,
|
|
|
|
jit/jit-rules-x86.c, jit/jit-rules-x86.h, jit/jit-rules.h,
|
|
|
|
jit/jit-value.c, tools/gen-sel-parser.y: implement a simple global
|
|
|
|
register allocation policy, based on usage counts.
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c (_jit_regs_load_value): if a value is in a
|
|
|
|
global register and it is not going to be destroyed by an instruction,
|
|
|
|
then use the global register as the operand.
|
|
|
|
|
|
|
|
* jit/jit-insn.c: recognise "t = a op b; a = t" and turn it
|
|
|
|
into "a = a op b" to make it easier for back ends to recognise
|
|
|
|
special idioms such as increments and decrements.
|
|
|
|
|
|
|
|
2004-06-01 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-cache.c, jit/jit-elf-read.c, tools/gen-apply.c:
|
|
|
|
fix some gcc 3.x compile warnings.
|
|
|
|
|
|
|
|
* jit/jit-rules-arm.c, jit/jit-rules-arm.sel: more instruction
|
|
|
|
selection rules for ARM.
|
|
|
|
|
|
|
|
* configure.in, jit/jit-rules.h: enable the x86 back end by
|
|
|
|
default on platforms where it makes sense, and add the option
|
|
|
|
"--enable-interpreter" to "configure".
|
|
|
|
|
|
|
|
2004-05-31 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.sel: optimize multiplications for x86.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.c, jit/jit-rules-x86.sel, tools/gen-sel-parser.y,
|
|
|
|
tools/gen-sel-scanner.l: inline and optimize divisions for x86.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.sel: throw exceptions correctly for "check_null".
|
|
|
|
|
|
|
|
2004-05-30 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* doc/libjit.texi: clarify the text that describes LLVM, at the
|
|
|
|
request of Chris Lattner, LLVM's author.
|
|
|
|
|
|
|
|
* jit/jit-insn.c (jit_insn_convert): use intrinsic functions
|
|
|
|
for conversions when the back end doesn't support the opcode.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.sel, tools/gen-sel-parser.y,
|
|
|
|
tools/gen-sel-scanner.l: improve instruction selection for
|
|
|
|
floating-point "push" operations.
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, jit/jit-insn.c, jit/jit-internal.h,
|
|
|
|
jit/jit-rules-x86.c: add "jit_insn_defer_pop_stack" and
|
|
|
|
"jit_insn_flush_defer_pop", to defer the popping of function
|
|
|
|
call arguments as long as possible.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.sel: fix a cpu vs non-cpu register problem
|
|
|
|
in the floating-point "push" operations for x86.
|
|
|
|
|
|
|
|
2004-05-29 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-insn.c, jit/jit-reg-alloc.c, jit/jit-reg-alloc.h,
|
|
|
|
jit/jit-rules-x86.c, jit/jit-rules-x86.sel: continue the
|
|
|
|
x86 back end; particularly byte/short stores.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.sel: stub out JIT_OP_RETURN_REG, which
|
|
|
|
doesn't need any special handling for x86.
|
|
|
|
|
|
|
|
2004-05-27 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* tools/gen-apply.c: split "detect_struct_conventions" up a bit
|
|
|
|
more to (hopefully) prevent problems under MacOSX; fix a bug in
|
|
|
|
the generation of "jit_apply_builder_align_regs" that affected
|
|
|
|
ARM and PPC systems.
|
|
|
|
|
|
|
|
* dpas/dpas-types.c (dpas_type_identical): treat "float64" and
|
|
|
|
"nfloat" as identical on platforms whose "long double" type is
|
|
|
|
the same as "double".
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.c, jit/jit-rules-x86.sel, tools/gen-sel-parser.y,
|
|
|
|
tools/gen-sel-scanner.l: relative loads and stores for x86.
|
|
|
|
|
|
|
|
2004-05-26 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-insn.c, jit/jit-rules-x86.c, jit/jit-rules-x86.sel,
|
|
|
|
jit/jit-rules.h, tools/gen-sel-parser.y: fix some compile issues
|
|
|
|
in the x86 native back end.
|
|
|
|
|
|
|
|
* jit/jit-function.c, jit/jit-rules-x86.c, jit/jit-rules-x86.sel,
|
|
|
|
tools/gen-sel-parser.y: more bug fixes for the x86 back end.
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, include/jit/jit-plus.h, jit/jit-insn.c,
|
|
|
|
jitplus/jit-plus-function.cpp: add "jit_insn_new_block" to simplify
|
|
|
|
creating a new block that doesn't have an explicit label.
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y, include/jit/jit-block.h, jit/jit-block.c,
|
|
|
|
jit/jit-insn.c: add "jit_block_current_is_dead" to simplify
|
|
|
|
testing if the last block is reachable or not, taking empty
|
|
|
|
trailing blocks into account.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.c, jit/jit-rules-x86.sel, tools/gen-sel-parser.y,
|
|
|
|
tools/gen-sel-scanner.l: more selection cases for the x86 back end.
|
|
|
|
|
|
|
|
* jit/Makefile.am, jit/jit-gen-arm.h, jit/jit-rules-arm.c,
|
|
|
|
jit/jit-rules-arm.sel: add the beginnings of the instruction
|
|
|
|
selector for ARM.
|
|
|
|
|
|
|
|
2004-05-25 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* tools/.cvsignore, tools/Makefile.am, tools/gen-sel-parser.y,
|
|
|
|
tools/gen-sel-scanner.l: add the "gen-sel" program to the tree,
|
|
|
|
to assist with building native instruction selectors.
|
|
|
|
|
|
|
|
* jit/.cvsignore, jit/Makefile.am, jit/jit-rules-x86.c,
|
|
|
|
jit/jit-rules-x86.sel, tools/gen-sel-parser.y: check in the
|
|
|
|
initial instruction selector for x86 (incomplete).
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.sel, tools/gen-sel-parser.y,
|
|
|
|
tools/gen-sel-scanner.l: selectors for branch instructions.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.sel: selectors for call instructions.
|
|
|
|
|
|
|
|
2004-05-24 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, include/jit/jit-opcode.h, jit/jit-block.c,
|
|
|
|
jit/jit-dump.c, jit/jit-except.c, jit/jit-function.c, jit/jit-insn.c,
|
|
|
|
jit/jit-internal.h, jit/jit-interp.c, jit/jit-interp.h,
|
|
|
|
jit/jit-opcode.c, jit/jit-rules-arm.c, jit/jit-rules-interp.c,
|
|
|
|
jit/jit-rules-x86.c, jit/jit-rules.h, jit/jit-setjmp.h:
|
|
|
|
rewrite the exception region routines to make them easier
|
|
|
|
to use from CLI and JVM style systems.
|
|
|
|
|
|
|
|
* jit/jit-rules-interp.c (_jit_gen_start_block): set the address
|
|
|
|
of the exception handler for interpreted code.
|
|
|
|
|
|
|
|
* include/jit/jit-plus.h, jitplus/jit-plus-function.cpp:
|
|
|
|
add missing functions to the C++ API.
|
|
|
|
|
|
|
|
2004-05-22 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-block.c (_jit_block_peephole_branch): don't allow
|
|
|
|
conditional branches to cross an exception context boundary,
|
|
|
|
because doing so will violate "finally" semantics.
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y, include/jit/jit-insn.h, jit/jit-function.c,
|
|
|
|
jit/jit-insn.c, jit/jit-internal.h: rename "jit_insn_move_blocks"
|
|
|
|
to "jit_insn_move_blocks_to_end" and add a new function
|
|
|
|
"jit_insn_move_blocks_to_start" for creating initialization code.
|
|
|
|
|
|
|
|
* include/jit/jit-opcode.h, jit/jit-except.c, jit/jit-function.c,
|
|
|
|
jit/jit-insn.c, jit/jit-internal.h, jit/jit-interp.c, jit/jit-opcode.c,
|
|
|
|
jit/jit-setjmp.h: modify the function call logic to use "setjmp"
|
|
|
|
with native back ends.
|
|
|
|
|
|
|
|
2004-05-21 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-gen-arm.c, jit/jit-gen-arm.h: modify the ARM codegen
|
|
|
|
macros so that they can be used for branch elimination.
|
|
|
|
|
|
|
|
* include/jit/jit-except.h, jit/jit-except.cpp, jit/jit-function.c,
|
|
|
|
jit/jit-insn.c, jit/jit-internal.h, jit/jit-interp.cpp,
|
|
|
|
jit/jit-interp.h, jit/jit-setjmp.h: redesign the exception handling
|
|
|
|
mechanism to use "setjmp" rather than C++ exceptions.
|
|
|
|
|
|
|
|
* configure.in, doc/Makefile.am, doc/libjit.texi, dpas/Makefile.am,
|
|
|
|
jit/Makefile.am, jit/jit-except.c, jit/jit-except.cpp,
|
|
|
|
jit/jit-interp.c, jit/jit-interp.cpp, jitdynamic/Makefile.am:
|
|
|
|
remove the last remaining C++ code from libjit.so so that
|
|
|
|
it is now a pure C library.
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, include/jit/jit-opcode.h,
|
|
|
|
include/jit/jit-plus.h, jit/jit-insn.c, jit/jit-interp.c,
|
|
|
|
jit/jit-opcode.c, jitplus/jit-plus-function.cpp:
|
|
|
|
add the "jit_insn_alloca" instruction.
|
|
|
|
|
|
|
|
* configure.in, jit/.cvsignore, jit/Makefile.am, jit/jit-interp.c,
|
|
|
|
jit/mklabel.sh: use computed goto's in the interpreter if supported
|
|
|
|
by the underlying compiler.
|
|
|
|
|
|
|
|
2004-05-20 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* include/jit/jit-value.h, jit/jit-insn.c, jit/jit-value.c:
|
|
|
|
convert constant conditional branches such as "if true goto L" into
|
|
|
|
unconditional branches.
|
|
|
|
|
|
|
|
* jit/jit-block.c, jit/jit-internal.h, jit/jit-live.c,
|
|
|
|
jit/jit-rules-interp.c: perform peephole optimization of
|
|
|
|
branches to branches before live variable analysis, so that
|
|
|
|
the back ends don't need to worry about jump threading.
|
|
|
|
|
|
|
|
* jit/jit-block.c, jit/jit-live.c: treat dead blocks as empty
|
|
|
|
when peepholing branches to the next block.
|
|
|
|
|
|
|
|
2004-05-15 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* tools/gen-apply.c: fix a macro generation bug for Win32 systems.
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c: fix a compile bug.
|
|
|
|
|
|
|
|
2004-05-14 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* include/jit/Makefile.am, include/jit/jit-objmodel-private.h,
|
|
|
|
include/jit/jit-objmodel.h, include/jit/jit.h, jit/Makefile.am,
|
|
|
|
jit/jit-objmodel.c: put some infrastructure in place to support
|
|
|
|
pluggable object models.
|
|
|
|
|
|
|
|
2004-05-13 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y, dpas/dpas-types.c, dpas/dpas-types.h:
|
|
|
|
put some infrastructure (incomplete) in place to support array
|
|
|
|
index expressions.
|
|
|
|
|
|
|
|
* configure.in, NEWS: update version for the "0.0.2" release.
|
|
|
|
|
|
|
|
* configure.in: updating working version to "0.0.3".
|
|
|
|
|
|
|
|
2004-05-12 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jitdynamic/Makefile.am, jitplus/Makefile.am: use both .libs and
|
|
|
|
non.libs versions of the so paths, because some versions of libtool
|
|
|
|
add .libs implicitly and others don't.
|
|
|
|
|
|
|
|
* dpas/dpas-builtin.c, dpas/dpas-parser.y, dpas/dpas-types.c,
|
|
|
|
dpas/dpas-types.h: add the "SameType" and "SameShape" builtins,
|
|
|
|
to assist with unit testing type coercions.
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y (IfTail): fix a bug that caused the "then"
|
|
|
|
case of an "if" to fall through to the "else".
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y: resolve ea-based lvalues in operators.
|
|
|
|
|
|
|
|
* include/jit/jit-defs.h.in: incorrect values for jit_max_int
|
|
|
|
and jit_max_long.
|
|
|
|
|
|
|
|
* dpas/dpas-scanner.l (dpas_parse_hex): ignore the 'H' on the
|
|
|
|
end of a hexadecimal constant.
|
|
|
|
|
|
|
|
* Makefile.am, configure.in, tests/.cvsignore, tests/Makefile.am,
|
|
|
|
tests/coerce.pas: check in some initial infrastructure for the
|
|
|
|
dpas-based test suite.
|
|
|
|
|
|
|
|
* jit/jit-type.c (jit_type_promote_int): promote ubyte and ushort
|
|
|
|
to uint, not int.
|
|
|
|
|
|
|
|
* jit/jit-insn.c, tests/coerce.pas: more coercion test cases and fixes.
|
|
|
|
|
|
|
|
* dpas/dpas-builtin.c, jit/jit-dump.c, jit/jit-value.c: add builtins
|
|
|
|
for mathematical operations.
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y, jit/jit-interp.cpp, tests/Makefile.am,
|
|
|
|
tests/math.pas: test cases and bug fixes for mathematical operations.
|
|
|
|
|
|
|
|
* dpas/dpas-main.c, include/jit/jit-context.h, jit/jit-context.c,
|
|
|
|
jit/jit-insn.c, tests/Makefile.am: add the "--dont-fold" option
|
|
|
|
to Dynamic Pascal, so that we can run the test cases without folding.
|
|
|
|
|
|
|
|
* tests/README: add a README file to describe how to write test cases.
|
|
|
|
|
|
|
|
2004-05-11 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, jit/jit-insn.c, jit/jit-interp.cpp,
|
|
|
|
jit/jit-interp.h, jit/jit-opcode.c, jit/jit-rules-interp.c:
|
|
|
|
round out the function call handling opcodes for the interpreter.
|
|
|
|
|
|
|
|
* jit/jit-rules-interp.c, jit/jit-rules-interp.h: implement
|
|
|
|
the exception-handling opcodes for the interpreter.
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y, dpas/dpas-scope.c, dpas/dpas-scope.h:
|
|
|
|
fix a bug that caused global variables in Dynamic Pascal
|
|
|
|
to be incorrectly allocated as locals.
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c (_jit_regs_load_to_top_two): handle the
|
|
|
|
case where the second value is on the stack but not the first.
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y, dpas/dpas-types.c, dpas/dpas-types.h:
|
|
|
|
report errors for unimplemented expressions and statements,
|
|
|
|
so that users are not "surprised" when things silently fail.
|
|
|
|
|
|
|
|
* .cvsignore, auto_gen.sh, configure.in, doc/.cvsignore,
|
|
|
|
dpas/.cvsignore, dpas/Makefile.am, include/.cvsignore,
|
|
|
|
jit/.cvsignore, jit/Makefile.am, jitdynamic/.cvsignore,
|
|
|
|
jitdynamic/Makefile.am, jitplus/.cvsignore, jitplus/Makefile.am,
|
|
|
|
tools/.cvsignore, tutorial/.cvsignore, tutorial/Makefile.am:
|
|
|
|
modify the autoconf/automake build system to use libtool.
|
|
|
|
|
|
|
|
2004-05-10 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c, jit/jit-reg-alloc.h, jit/jit-rules-interp.c:
|
|
|
|
interpreter code conversion for relative pointer and copy opcodes;
|
|
|
|
fix some bugs in stack-based register allocation.
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y, dpas/dpas-types.c, dpas/dpas-types.h:
|
|
|
|
loading and storing record fields in Dynamic Pascal.
|
|
|
|
|
|
|
|
* dpas/dpas-builtin.c: implement the "New" and "Dispose" builtins.
|
|
|
|
|
|
|
|
2004-05-08 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-cache.c, jit/jit-cache.h, jit/jit-dump.c, jit/jit-interp.h,
|
|
|
|
jit/jit-rules-interp.c: add "_jit_cache_get_end_method", to allow
|
|
|
|
the end of a method's code to be located without explicit marking.
|
|
|
|
|
|
|
|
* configure.in, include/jit/jit-util.h, jit/jit-string.c:
|
|
|
|
remove the locale-sensitive string comparison routines because
|
|
|
|
they aren't used in libjit, and front ends will normally have
|
|
|
|
their own functions for this purpose.
|
|
|
|
|
|
|
|
* Makefile.am, configure.in, doc/Makefile.am, doc/libjit.texi,
|
|
|
|
include/jit/Makefile.am, include/jit/jit-dynamic.h,
|
|
|
|
include/jit/jit-util.h, jit/Makefile.am, jit/jit-dynlib.c,
|
|
|
|
jit/jit-mangle.c, jitdynamic/.cvsignore, jitdynamic/Makefile.am,
|
|
|
|
jitdynamic/jit-cpp-mangle.c, jitdynamic/jit-dynlib.c:
|
|
|
|
move the dynlib and C++ name mangling routines into a separate
|
|
|
|
"jitdynamic" library, which will handle all of the cross-language
|
|
|
|
naming and dynamic invocation logic.
|
|
|
|
|
|
|
|
* include/jit/jit-type.h, jit/jit-internal.h, jit/jit-type.c,
|
|
|
|
jitdynamic/jit-cpp-mangle.c: move the "JIT_TYPE_xxx" constants
|
|
|
|
into the public headers and add "jit_type_get_kind" so that
|
|
|
|
front end code can classify types quickly.
|
|
|
|
|
|
|
|
* jit/jit-dump.c: use "objdump" to dump compiled native code.
|
|
|
|
|
|
|
|
2004-05-07 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* dpas/dpas-function.c, dpas/dpas-internal.h, dpas/dpas-main.c,
|
|
|
|
dpas/dpas-parser.y, jit/jit-interp.cpp, jit/jit-interp.h,
|
|
|
|
jit/jit-opcode.c, jit/jit-rules-interp.c: execute the "main"
|
|
|
|
method once a Dynamic Pascal program has been compiled;
|
|
|
|
fix some calling convention problems with "call_external".
|
|
|
|
|
|
|
|
* dpas/dpas-builtin.c, dpas/dpas-scanner.l: add the "Flush"
|
|
|
|
and "Terminate" builtins; fix a small bug in string scanning.
|
|
|
|
|
|
|
|
* include/jit/jit-elf.h, jit/Makefile.am, jit/jit-context.c,
|
|
|
|
jit/jit-elf-read.c, jit/jit-internal.h, jit/jit-symbol.c:
|
|
|
|
implement symbol relocations for the ELF binary reader.
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y: code generation for "for" loops.
|
|
|
|
|
|
|
|
2004-05-06 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* dpas/Makefile.am, dpas/dpas-builtin.c, dpas/dpas-function.c,
|
|
|
|
dpas/dpas-internal.h, dpas/dpas-main.c, dpas/dpas-parser.y,
|
|
|
|
dpas/dpas-scope.c, dpas/dpas-scope.h, dpas/dpas-semantics.h,
|
|
|
|
dpas/dpas-types.c, dpas/dpas-types.h, include/jit/jit-block.h,
|
|
|
|
include/jit/jit-insn.h, include/jit/jit-plus.h, jit/jit-block.c,
|
|
|
|
jit/jit-dump.c, jit/jit-function.c, jit/jit-insn.c, jit/jit-interp.cpp,
|
|
|
|
jit/jit-opcode.c, jit/jit-rules-arm.c, jit/jit-rules-interp.c,
|
|
|
|
jit/jit-rules-x86.c, jit/jit-type.c, jit/jit-value.c,
|
|
|
|
jitplus/jit-plus-function.cpp: get basic compilation working
|
|
|
|
in Dynamic Pascal.
|
|
|
|
|
|
|
|
2004-05-03 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* tools/gen-apply.c: improve the maintainability of the apply macros.
|
|
|
|
|
|
|
|
* include/jit/jit-block.h, include/jit/jit-context.h,
|
|
|
|
include/jit/jit-dump.h, include/jit/jit-elf.h, include/jit/jit-init.h,
|
|
|
|
include/jit/jit-meta.h, include/jit/jit-type.h, include/jit/jit-util.h,
|
|
|
|
jit/jit-type.c, jit/jit-value.c: add more instances of JIT_NOTHROW
|
|
|
|
to the headers; add some special meta tags for types.
|
|
|
|
|
|
|
|
* include/jit/jit-type.h, jit/jit-type.c: tag the system-dependent
|
|
|
|
types so that they can be distinguished from the fixed-sized types
|
|
|
|
when it is necessary to do so.
|
|
|
|
|
|
|
|
* jit/Makefile.am, jit/jit-mangle.c: add the beginnings of a C++
|
|
|
|
name mangler, to help with extracting C++ symbols from dynamic
|
|
|
|
shared libraries.
|
|
|
|
|
|
|
|
* doc/Makefile.am, doc/libjit.texi, doc/mangling_rules.txt,
|
|
|
|
include/jit/jit-type.h, include/jit/jit-util.h, jit/jit-mangle.c,
|
|
|
|
jit/jit-type.c: continue the implementation of the C++ name
|
|
|
|
mangling routines.
|
|
|
|
|
|
|
|
2004-05-01 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-apply-x86.c, jit/jit-rules-x86.c, tools/gen-apply.c:
|
|
|
|
fix function prolog and epilog handling for structure returns
|
|
|
|
under x86/cdecl.
|
|
|
|
|
|
|
|
* configure.in: set the initial working version to 0.0.1.
|
|
|
|
|
|
|
|
* jit/jit-rules-x86.c: implement x86 code generation for some of
|
|
|
|
the basic operators.
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, include/jit/jit-opcode.h,
|
|
|
|
include/jit/jit-plus.h, jit/jit-insn.c, jit/jit-interp.cpp,
|
|
|
|
jit/jit-opcode.c, jit/jit-reg-alloc.c, jit/jit-reg-alloc.h,
|
|
|
|
jit/jit-rules-interp.c, jitplus/jit-plus-function.cpp:
|
|
|
|
add array access instructions.
|
|
|
|
|
|
|
|
* tools/gen-apply.c: clean up the builder/parser macros and
|
|
|
|
detect padding of the floating-point registers.
|
|
|
|
|
|
|
|
2004-04-30 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* include/jit/jit-function.h, include/jit/jit-insn.h,
|
|
|
|
include/jit/jit-opcode.h, include/jit/jit-plus.h, jit/jit-except.cpp,
|
|
|
|
jit/jit-function.c, jit/jit-insn.c, jit/jit-internal.h,
|
|
|
|
jit/jit-interp.cpp, jit/jit-interp.h, jit/jit-opcode.c,
|
|
|
|
jit/jit-rules-arm.c, jit/jit-rules-interp.c, jit/jit-rules-x86.c,
|
|
|
|
jit/jit-rules.h, jitplus/jit-plus-function.cpp: put some
|
|
|
|
infrastructure in place to support "try"-related instructions.
|
|
|
|
|
|
|
|
* dpas/dpas-parser.y, dpas/dpas-scope.h, dpas/dpas-semantics.h:
|
|
|
|
introduce effective address based l-values into dpas.
|
|
|
|
|
|
|
|
2004-04-27 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-dump.c, jit/jit-reg-alloc.c: fix a register stack bug
|
|
|
|
in "_jit_regs_set_value"; add some more debug code.
|
|
|
|
|
|
|
|
* include/jit/jit-opcode.h, jit/jit-insn.c, jit/jit-internal.h,
|
|
|
|
jit/jit-interp.cpp, jit/jit-opcode.c: wrap function calls
|
|
|
|
with code to set up and remove exception frame information.
|
|
|
|
|
|
|
|
* jit/jit-function.c, jit/jit-insn.c, jit/jit-internal.h:
|
|
|
|
intuit "nothrow" and "noreturn" flags for compiled functions.
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, include/jit/jit-plus.h, jit/jit-insn.c,
|
|
|
|
jitplus/jit-plus-function.cpp: add "jit_insn_throw",
|
|
|
|
"jit_insn_rethrow", and "jit_insn_get_call_stack" to assist
|
|
|
|
with throwing exceptions.
|
|
|
|
|
|
|
|
* include/jit/jit-insn.h, jit/jit-block.c, jit/jit-insn.c,
|
|
|
|
jit/jit-internal.h: add some instructions for managing "try" blocks.
|
|
|
|
|
|
|
|
* include/jit/jit-opcode.h, jit/jit-block.c, jit/jit-insn.c,
|
|
|
|
jit/jit-internal.h, jit/jit-opcode.c: more work on "try" blocks.
|
|
|
|
|
|
|
|
2004-04-26 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-reg-alloc.c, jit/jit-reg-alloc.h: add functions to
|
|
|
|
assist with register allocation on stack-based architectures.
|
|
|
|
|
|
|
|
* jit/jit-rules-interp.c: implement "_jit_gen_load_value" for
|
|
|
|
the interpreter backend.
|
|
|
|
|
|
|
|
* jit/jit-interp.cpp, jit/jit-interp.h: fix some opcode names that
|
|
|
|
should be prefixed with "JIT_OP".
|
|
|
|
|
|
|
|
* jit/jit-function.c, jit/jit-internal.h, jit/jit-reg-alloc.c,
|
|
|
|
jit/jit-reg-alloc.h, jit/jit-rules-arm.c, jit/jit-rules-interp.c,
|
|
|
|
jit/jit-rules-interp.h, jit/jit-rules-x86.c, jit/jit-rules.h:
|
|
|
|
interpreter back end code generation for binary, unary, and
|
|
|
|
branch opcodes.
|
|
|
|
|
|
|
|
* doc/libjit.texi, jit/jit-rules-interp.c: fix the Texinfo section
|
|
|
|
markers in the "Porting" chapter.
|
|
|
|
|
|
|
|
* jit/jit-rules-interp.c: code generation for interpreter return's.
|
|
|
|
|
|
|
|
* include/jit/jit-except.h, include/jit/jit-function.h,
|
|
|
|
include/jit/jit-plus.h, jit/jit-except.cpp, jit/jit-function.c,
|
|
|
|
jit/jit-interp.cpp, jit/jit-interp.h, jit/jit-rules-interp.c,
|
|
|
|
jitplus/jit-plus-function.cpp: implement "jit_function_apply"
|
|
|
|
and "jit_function_apply_vararg" for the interpreter back end.
|
|
|
|
|
|
|
|
* jitplus/jit-plus-function.cpp: initialization errors in
|
|
|
|
the C++ binding.
|
|
|
|
|
|
|
|
* jit/jit-function.c, jit/jit-insn.c, jit/jit-interp.cpp,
|
|
|
|
jit/jit-rules-interp.c: work on code generation for function calls.
|
|
|
|
|
|
|
|
* doc/libjit.texi, include/jit/jit-insn.h, include/jit/jit-plus.h,
|
|
|
|
jit/jit-insn.c, jitplus/jit-plus-function.cpp, tutorial/t2.c:
|
|
|
|
add a "flags" parmeter to "jit_insn_call" and friends, so that
|
|
|
|
"nothrow", "noreturn", and "tail" options can be supplied.
|
|
|
|
|
|
|
|
* jit/jit-dump.c, jit/jit-interp.cpp, jit/jit-interp.h,
|
|
|
|
jit/jit-opcode.c, jit/jit-rules-interp.c: dump the translated
|
|
|
|
native code from "jit_dump_function" are compilation.
|
|
|
|
|
|
|
|
* jit/jit-interp.cpp, jit/jit-rules-interp.c: argument variable
|
|
|
|
offsets should in item units, not byte units.
|
|
|
|
|
|
|
|
* jit/jit-insn.c, jit/jit-reg-alloc.c, jit/jit-reg-alloc.h,
|
|
|
|
jit/jit-rules-interp.c: improve register allocation in stacks.
|
|
|
|
|
|
|
|
2004-04-25 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* jit/jit-apply-func.h, jit/jit-apply-x86.c, jit/jit-apply-x86.h,
|
|
|
|
jit/jit-cache.c: use CPU-specifc padding for aligning code
|
|
|
|
areas with NOP's, for greater runtime efficiency.
|
|
|
|
|
|
|
|
* include/jit/jit-elf.h, jit/Makefile.am, jit/jit-elf-write.c:
|
|
|
|
add the skeleton of the ELF writing routines.
|
|
|
|
|
|
|
|
* jit/jit-interp.cpp: modify VM_BR_TARGET so that it is PIC-friendly.
|
|
|
|
|
|
|
|
2004-04-24 Rhys Weatherley <rweather@southern-storm.com.au>
|
|
|
|
|
|
|
|
* */*: Initial public release. Most of the skeleton code is in place.
|