Alien-LibJIT
view release on metacpan or search on metacpan
libjit/ChangeLog view on Meta::CPAN
* doc/libjit.texi: update tutorial.
2007-12-16 Klaus Treichel <ktreichel@web.de>
* configure.in: Add support for multi os archs (like x86_64). Put the
libraries in the correct directories so that 32- and 64-bit code doesn't
get mixed up.
* jit/jit-apply-x86-64.h: Add some information about the clobber list to
jit_builtin_apply and add r10 and r11 to the clobber list because they
are not preserved by the callee and we call arbitrary functions here.
* jit/jit-internal.h: Cast _JIT_ALIGN_TO_TYPE to jit_nuint instead of
unsigned because jit_nuint is guaranteed to have the size of a pointer.
This fixes compiler warnings on x86_64 too.
2007-11-27 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-rules-x86.c (_jit_gen_load_value): fix compiler warnings.
2007-11-17 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-insn.c (jit_insn_mark_offset): do not start new block
on the bytecode mark. If a mark goes just after another mark then
replace the old mark rather than add the new.
* jit/jit-cache.c (_jit_cache_get_bytecode)
(_jit_cache_get_native): fix offset for the last bytecode mark.
2007-11-13 Aleksey Demakov <ademakov@gmail.com>
* tools/Makefile.am (noinst_HEADERS): add gen-apply-macosx.h
2007-11-08 Aleksey Demakov <ademakov@gmail.com>
* include/jit/jit-plus.h, jitplus/jit-plus-function.cpp (new_label):
add c++ wrapper for jit_function_reserve_label.
* include/jit/jit-plus.h (clear_recompilable): fix a typo.
2007-10-07 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-rules-x86.ins (JIT_OP_JUMP_TABLE): fix jump table code
generation.
* include/jit/jit-function.h:
* jit/jit-function.c (jit_function_reserve_label): add new function
to create labels for jump tables.
2007-06-11 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-insn.c (accumulate_relative_offset): remove.
* jit/jit-insn.c (find_base_insn, jit_insn_load_relative)
(jit_insn_store_relative, jit_insn_add_relative): add find_base_insn
function that should finally optimize relative instructions
correctly.
2007-06-10 Aleksey Demakov <ademakov@gmail.com>
* tools/gen-rules-parser.y (gensel_output_clauses): alter selection
logic so that "reg" rules are chosen over "local" in case the value
is used again in the same basic block.
* jit/jit-rules-x86.ins: tweak COPY rules for bytes, shorts, and
ints.
* jit/jit-live.c (forward_propagation, backward_propagation)
(is_copy_insn): do not perform copy propagation if JIT_OP_COPY_INT
is used for byte and short values.
2007-05-28 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-live.c (forward_propagation, backward_propagation): do not
optimize addressable and volatile values.
2007-05-28 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-live.c (_jit_function_compute_liveness)
(forward_propagation, backward_propagation): add simple copy
propagation that works only within basic blocks.
* jit/jit-value.c (jit_value_ref): do not set the live flag here
as this is done in jit-live.c now.
2007-05-26 Klaus Treichel <ktreichel@web.de>
* jit/jit-intrinsic.c: Fix conversion from ulong to nfloat for values
greater that jit_max_long.
2007-05-26 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-insn.c (jit_insn_store): remove incorrect optimization
that eliminates intermediate value without knowledge of its later
use.
2007-04-04 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-reg-alloc.c (commit_output_value): fix compilation for
archs without register stack (thanks Klaus).
2007-03-04 Aleksey Demakov <ademakov@gmail.com>
* configure.in: update working version to "0.1.1".
2007-03-03 Aleksey Demakov <ademakov@gmail.com>
* include/jit/Makefile.am: add jit-arch.h to BUILT_SOURCES.
* doc/Makefile.am: add extract-docs.sh, mkhtml.sh, mkpdf.sh to
EXTRA_DIST.
* configure.in: bump version to 0.1.0.
* NEWS: update news for the 0.1.0 release.
2007-02-25 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-reg-alloc.c (adjust_assignment, _jit_regs_gen): the ops
that have dest value on x87 stack but have no x87 input values need
the dest register to be adjusted after spilling too.
(is_register_occupied, clobbers_register): undo is_register_occupied
libjit/ChangeLog view on Meta::CPAN
* jit/jit-function.c (jit_function_compile, compile_block): do not
make register allocator calls if JIT_BACKEND_INTERP is defined.
2006-08-29 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-function.c (jit_function_from_pc): fix problem with wrong
exception handler address for interpreter.
* jit/jit-insn.c (jit_insn_return, jit_insn_return_ptr): do not pop
the setjmp context for the interpreter backend because it takes care
of this by itself.
* jit/jit-rules.h, jit/jit-rules-alpha.c, jit/jit-rules-arm.c,
* jit/jit-rules-interp.c, jit/jit-rules-x86.c, jit/jit-reg-alloc.c:
move part of the _jit_gen_exch_top() functionality into a separate
_jit_gen_move_top() function.
* include/jit/jit-opcode.h:
* jit/jit-opcode.c: add JIT_OPCODE_IS_JUMP_TABLE flag to mark the
JIT_OP_JUMP_TABLE opcode.
* jit/jit-dump.c (jit_dump_insn, dump_interp_code): add jump table
dumping.
2006-08-28 Klaus Treichel <ktreichel@web.de>
* dpas/Makefile.am, jit/Makefile.am, tests/Makefile.am: Add missing
sources to fix creation of tarballs (make dist).
2006-08-25 Yan Burman <yan_952@hotmail.com>
* jitdynamic/jit-cpp-mangle.c (mangle_type_gcc3): fix typo in
is_unsigned usage (patch #5324)
2006-08-23 Thomas Cort <linuxgeek@gmail.com>
* jit/jit-apply-alpha.c jit/jit-apply-alpha.h: Fix jit_redirector_size.
alpha_call is 6 instructions, not 1. 5 to load the addr, 1 to call.
* jit/jit-gen-alpha.h: add macros for fp sign copy and arithmetic.
* jit/jit-rules-alpha.c: remove TODO() from unused functions.
2006-08-23 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-internal.h (struct _jit_function): change the type of
redirector and indirector fields from char array to pointer.
* jit/jit-function.c (jit_function_create): allocate the redirector
and indirector buffers in the code cache. Call jit_flush_exec on
these buffers. This fixes problems on alpha and some x86 linux
distros. [This one is based on the initial solution suggested by
Kirill Kononenko <Kirill.Kononenko@gmail.com>].
* jit/jit-rules-x86.c (_jit_gen_redirector): ifdef out as this
function is not used with the x86 backend.
* jit/jit-reg-alloc.c: improve handling of three-address op codes.
Now the dest register may re-use one of the input registers while
previously it was always assigned to a separate register. Also
restructure the code that will be used for better selection of x87
instructions (this code was not used before and still is not but
this is about to change).
* jit/jit-rules-x86.ins: rewrite all LOAD_RELATIVE and LOAD_ELEMENT
ops for x86 as three-address. Adjust IREM ops so that they work
correctly together with the latest allocator changes.
2006-08-22 Klaus Treichel <ktreichel@web.de>
* jit/jit-alloc.c: Use mmap and munmap to allocate executable memory
where available because memory allocated with malloc is not executable
on some archs/distros.
2006-08-21 Thomas Cort <linuxgeek@gmail.com>
* jit/jit-rules-alpha.c jit/jit-gen-alpha.h: Add macros for
int to fp and fp to int conversions. Use _jit_pad_bufer.
2006-08-20 Thomas Cort <linuxgeek@gmail.com>
* jit/jit-apply-alpha.c jit/jit-apply-alpha.h jit/jit-rules-alpha.h
jit/jit-rules-alpha.ins jit/jit-rules-alpha.c jit/jit-gen-alpha.h:
Remove unnecessary code from the prolog, epilog, redirector, and
closure. Implement > and >= opcodes for signed and unsigned values.
2006-08-19 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-reg-alloc.c (set_regdesc_flags): fix a problem with the
clobber flag being ignored. The problem was introduced by the patch
from 2006-06-17.
2006-08-15 Thomas Cort <linuxgeek@gmail.com>
* jit/jit-rules-alpha.c jit/jit-rules-alpha.h jit/jit-rules-alpha.ins
Add a TODO() macro to print unimplemented warnings. Fix some
casting warnings. Implement _jit_gen_redirector(...). Fix
JIT_CDECL_WORD_REG_PARAMS to use the correct parameter
registers. Add some stack push and pop instructions.
2006-08-15 Kirill Kononenko <Kirill.Kononenko@gmail.com>
* configure.in: add --enable-signals option;
* jit/Makefile.am: add jit/jit-signal.c;
* jit/jit-signal.c, jit/jit-internal.h: add _jit_signal_init();
* jit/jit-init.c: call _jit_signal_init() if JIT_USE_SIGNALS is
defined. (patch #5278.)
2006-08-11 Thomas Cort <linuxgeek@gmail.com>
* jit/jit-rules-alpha.c jit/jit-rules-alpha.ins Properly handle
fixups on alpha. Implement JIT_OP_CALL_EXTERNAL for alpha.
2006-07-29 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-reg-alloc.c (use_cheapest_register): allow a register that
contains an input value to be used as a scratch register. The input
value in this case is copied to another register. This resolves the
problem with JIT_OP_IREM rule that failed to allocate a scratch reg
in a very specific case (all EBX, ESI, EDI regs are used as global,
dividend is initially in ECX and copied to EAX:EDX pair where x86
libjit/ChangeLog view on Meta::CPAN
* jit/jit-reg-alloc.c (_jit_regs_gen): handle instructions that have
both stack and flat registers.
* jit/jit-reg-alloc.c (spill_value): spilling an input value remember
if we do register exchanges for other values.
* jit/jit-reg-alloc.c: set touched registers more accurately.
2006-05-08 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-reg-alloc.c (commit_input_value, commit_output_value):
fix extra spills introduced at 2006-05-05.
* jit/jit-rules-x86.c (_jit_gen_spill_top): add missing
jit_cache_end_output().
2006-05-05 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-reg-alloc.h, jit/jit-reg-alloc.c: fix spilling and many
problems with stack registers.
2006-05-04 Radek Polak <psonek2@seznam.cz>
* jit/jit-dump.c (dump_object_code): Now can dump to any stream
not just stdout and stderr.
2006-05-01 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-rules-x86.sel, jit/jit-rules-x86.ins: fix problem with
spilling dest register in JIT_OP_ADDRESS_OF rule.
* jit/jit-rules-x86.ins: rewrite JIT_OP_STORE_RELATIVE_INT rule.
2006-04-23 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-reg-alloc.h, jit/jit-reg-alloc.c: register allocator now
supports register sets that constrain the register assignment.
* tools/gen-rules-parser.y: extend grammar to support register sets.
Fix bugs.
* jit/jit-rules-x86.ins: take advantage of new register allocator
for JIT_OP_MEMORY, JIT_OP_MEMOVE, JIT_OP_MEMESET rules.
2006-04-20 Aleksey Demakov <ademakov@gmail.com>
* tools/gen-rules-parser.y: fix generation of `if' pattern code.
2006-04-19 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-rules-x86.c (_jit_gen_load_value): fix compiler warning.
* tools/gen-rules-parser.y (gensel_output_clauses): fix generation
of clobber and scratch code.
* tools/gen-rules-scanner.l, tools/gen-rules-parser.y: add `any'
keyword.
2006-04-18 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-rules-x86.ins: add instruction selection rules for new
register allocator.
* jit/Makefile.am: build new instruction selection rules.
* configure.in: add --enable-new-reg-alloc option.
2006-04-14 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-reg-alloc.h, jit/jit-reg-alloc.c: new register allocator
improved and extended to support stack registers.
* jit/jit-internal.h (struct _jit_builder):
* jit/jit-function.c (compile_block, jit_function_compile): add
some tracing.
* jit/jit-rules.h:
* jit/jit-rules-arm.c:
* jit/jit-rules-interp.c:
* jit/jit-rules-x86.c: add _jit_gen_exch_top and _jit_gen_spill_top
functions used by new allocator to handle stack registers. Add reg
argument to _jit_gen_spill_global and_jit_gen_load_global
functions.
2006-04-11 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-insn.c (jit_insn_start_catcher): initialize
thrown_exception (the problem was found by Klaus).
2006-04-08 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-opcode.c: add jump table into jit_opcodes array.
* tools/gen-rules-parser.y: extend pattern syntax to allow mark
registers as clobbered. Fix bugs.
2006-04-07 Klaus Treichel <ktreichel@web.de>
* jit/jit-internal.h (struct _jit_function): add indirector field.
* jit/jit-function.c (jit_function_compile, jit_function_create):
use indirector.
* jit/jit-apply-x86.h: define jit_indirector_size.
* jit/jit-apply-func.h, jit/jit-apply-x86.c (_jit_create_indirector):
add function that emits indirector code.
2006-04-07 Aleksey Demakov <ademakov@gmail.com>
* jit/jit-insn.c (create_call_setup_insns): zero struct_return
in case of tail calls (the problem was found by Klaus).
2006-04-03 Aleksey Demakov <ademakov@gmail.com>
* tools/gen-rules-scanner.l:
* tools/gen-rules-parser.y: add `reversible', `x87arith',
and `copy' keywords. Fix bugs.
2006-03-23 Klaus Treichel <ktreichel@web.de>
* jit/jitc-except.c: Walk the stack to build the stack trace in
jit_exception_get_stack_trace when the frame is not broken.
2006-03-23 Aleksey Demakov <ademakov@gmail.com>
* tools/Makefile.am:
* tools/gen-rules-parser.y, tools/gen-rules-scanner.l: add
libjit/ChangeLog view on Meta::CPAN
* jit/jit-opcode.c: fix the operand types for "call_vtable_ptr".
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>
( run in 0.821 second using v1.01-cache-2.11-cpan-fa01517f264 )