* src/vm/jit/optimizing/: New directory for optimizing compiler (SSA
by now - does not work by now, code merging with svn head introduced
some hazardous faults).
* src/vm/jit/optimizing/dominators.c: Computation of dominators and
domination frontier for SSA.
* src/vm/jit/optimizing/dominators.h: Include file for dominators.c.
* src/vm/jit/optimizing/graph.c: CFG functions needed for SSA.
* src/vm/jit/optimizing/graph.h: Include file for graph.c
* src/vm/jit/optimizing/lifetimes.c: Scanning lifetimes for SSA.
* src/vm/jit/optimizing/lifetimes.h: Include file for lifetimes.c
* src/vm/jit/optimizing/lsra.c: LSRA based on SSA.
* src/vm/jit/optimizing/lsra.h: Include file for lsra.c.
* src/vm/jit/optimizing/Makefile.am: New Makefile.am for this
directory.
* src/vm/jit/optimizing/ssa.c: Computation of SSA form.
* src/vm/jit/optimizing/ssa.h: Include File for ssa.c.
* src/vm/jit/allocator/lsra.c: Moved from src/vm/jit. Quite complete
code change (including: no more allocation of unused reserved
registers, possibility of exact lifetime analysis, removal of old
lifetime test functions).
* src/vm/jit/allocator/lsra.h: Moved from src/vm/jit.
* src/vm/jit/allocator/liveness.c: New File. Exact lifetime analysis
for LSRA.
* src/vm/jit/allocator/liveness.h: New File. Include File for
liveness.c. The #define LV enables by now the exact liveness analysis.
* src/vm/jit/allocator/Makefile.am: Adopted for new/moved files in
src/vm/jit/allocator.
* sc/vm/jit/Makefile.am: Adopted for above new/moved files.
* configure.ac: Introduced ENABLE_SSA: new option --enable-ssa.
Changes for ENABLE_LSRA (--enable-lsra). New Makefile in
src/vm/jit/optimizing added.
* src/vm/jit/allocator/simplereg.c (reg_make_statistics): Support for
ENABLE_SSA for statistics.
* src/vm/options.h: opt_lsra is used with ENABLE_SSA like with
ENABLE_LSRA.
* src/vm/options.c: opt_lsra is used with ENABLE_SSA like with
ENABLE_LSRA.
* src/vm/global.h: New struct imm for union imm_union to get another
operand for IINC in combination with SSA added.
* src/vm/vm.c: opt_lsra and the option -lsra is used with ENABLE_SSA
like with ENABLE_LSRA.
* src/vm/jit/stack.c (stack_analyse): No stack element lifetimes
counting anymore for lsra/ssa (m->maxlifetimes).
* src/vm/jit/stack.h: No stack lifetime counting anymore for lsra/ssa
(m->maxlifetimes).
* src/vm/jit/i386/codegen.c: Support for ENABLE_SSA added.
* src/vm/jit/i386/codegen.c (codegen_insert_phi_moves): New function
to insert phi moves for SSA at the end of Basic Blocks.
* src/vm/jit/i386/codegen.c (cg_move): New function to create the
instructions for the actual move for codegen_insert_phi_moves).
* src/vm/jit/i386/codegen.c (codegen): Logic and calls to use
codegen_insert_phi_moves for SSA added. With SSA for parameters in
memory this memory positions cannot be reused to avoid copying. Checks
added to prevent moves to or from stackslots removed by the dead code
elimination. Special handling for the new ICMD_IINC operand format
used by SSA added.
* src/vm/jit/i386/codegen.h (M_COPY): Checks added to prevent moves to
or from stackslots removed by the dead code elimination. Original
M_COPY renamed to _M_COPY.
* src/vm/jit/jit.c (jit_init): Populate op_needs_saved. Regard
ENABLE_SSA.
* src/vm/jit/jit.h: Support for ENABLE_SSA added. Added an array which
shows which ICMD's need a SAVEDVAR for SSA and the new LSRA with exact
liveness analysis. src/toolbox/Makefile.am: Changed to include the
following new files:
* src/toolbox/bitvector.c: Bitvector implementation for SSA.
* src/toolbox/bitvector.h: Include file for bitvector.c.
* src/toolbox/worklist.c: Worklist implementation for SSA.
* src/toolbox/worklist.h: Include file for worklist.c.
23 files changed: