* src/vm/jit/optimizing/: New directory for optimizing compiler (SSA
authorchristian <none@none>
Mon, 14 Aug 2006 17:50:12 +0000 (17:50 +0000)
committerchristian <none@none>
Mon, 14 Aug 2006 17:50:12 +0000 (17:50 +0000)
commit5a394d29834de42d73ab31c367aee0f87026a098
tree95b94c893677629ae93179cd598544ef0cbce460
parent3fd7dc26e62a6b7c07256c6460f8aeea3812e9bd
* 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:
configure.ac
src/toolbox/Makefile.am
src/toolbox/bitvector.c [new file with mode: 0644]
src/toolbox/bitvector.h [new file with mode: 0644]
src/toolbox/worklist.c [new file with mode: 0644]
src/toolbox/worklist.h [new file with mode: 0644]
src/vm/global.h
src/vm/jit/Makefile.am
src/vm/jit/allocator/Makefile.am
src/vm/jit/allocator/liveness.c [new file with mode: 0644]
src/vm/jit/allocator/liveness.h [new file with mode: 0644]
src/vm/jit/allocator/lsra.c
src/vm/jit/allocator/lsra.h
src/vm/jit/allocator/simplereg.c
src/vm/jit/i386/codegen.c
src/vm/jit/i386/codegen.h
src/vm/jit/jit.c
src/vm/jit/jit.h
src/vm/jit/stack.c
src/vm/jit/stack.h
src/vm/options.c
src/vm/options.h
src/vm/vm.c