* src/vm/jit/stack.h (COPY): Prevent setting varkind to STACKVAR for stackslots copie...
authorchristian <none@none>
Thu, 16 Feb 2006 19:39:36 +0000 (19:39 +0000)
committerchristian <none@none>
Thu, 16 Feb 2006 19:39:36 +0000 (19:39 +0000)
commit39f19b8d3d706e6d650966a77b60644fe702d5ee
tree4f262fc56f0b0580a47a2dd124d7d27d6ebc8fc2
parent81fafd2ea38175a881be6ba5d1dd156e95b4de89
* src/vm/jit/stack.h (COPY): Prevent setting varkind to STACKVAR for stackslots copied by DUPx and SWAP.
(DUP) Likewise.
* src/vm/jit/stack.c (analyse_stack): Copy elimination and needed conflict resolution was implemented as
described in the CACAO paper. As "potential exception throwing instruction" for now only INVOKE*s are
regarded. Conflict resolution over DUPx and SWAP should be refined to be less conservative.
* src/vm/jit/jit.c (jit_init): Stackreq for JAVA_IINC is set to 0 again, since no dummy stackslot is
needed anymore for conflict resolution with XSTORE.
* src/vm/jit/allocator/simplereg.c (interface_regalloc): Reuse unused float and int argument registers
for interfaces, too.
(reg_free_temp): Regard the new stackslot flag STCOPY, before freeing a register/memory location.
(reg_alloc_dup): New function to allocate, if possible, the same register/memory location for stackslot
copied by DUPx and SWAP.
(allocate_scratch_registers): The new function reg_alloc_dup is used now for allocation at ICMD_DUPx and
ICMD_SWAP, if possible.
* src/vm/jit/jit.h:  Added STCOPY as stackslot flag to mark simultanously live stackslots with same
register after DUPx and SWAP.
* doc/stack.txt: Updated invariants to show the change with IINC (no dummy stacklot anymore).
doc/stack.txt
src/vm/jit/allocator/simplereg.c
src/vm/jit/jit.c
src/vm/jit/jit.h
src/vm/jit/stack.c
src/vm/jit/stack.h