Branch: refs/heads/master
Home: http://github.com/penberg/jato
Commit: 87449e2786a026efcd1716b2dd4ee30437a954a8
http://github.com/penberg/jato/commit/87449e2786a026efcd1716b2dd4ee30437a954a8
Author: Tomek Grabiec <[email protected]>
Date: 2009-08-20 (Thu, 20 Aug 2009)
Changed paths:
M include/jit/basic-block.h
A include/jit/instruction.h
M jit/basic-block.c
M jit/spill-reload.c
Log Message:
-----------
jit: fix data flow resolution code in presence of empty basic blocks.
Data flow resolution code assumed that basic blocks always contain
some struct insn, before which spill/reload instructions can be
put. When data flow resolution was run on empty basic block, it worked
on invalid struct insn pointer and entered infinite loop.
This patch also fixes another bug. Data flow resolution didn't work
correctly when basic block in which spill occurs was not ended by a
branch. That's because in this case spill was inserted after the last
instruction, which is correct, but the corresponding spill slot moves
(push+pop) were inserted before last instruction - before the slot was
assigned a correct value.
Empty basic blocks can be a result of the following bytecode:
iconst_0
iconst_1
ifeq lab
pop // This and the next instruction generate no
iconst_1 // LIR instructions.
lab:
....
Cc: Arthur HUILLET <[email protected]>
Signed-off-by: Tomek Grabiec <[email protected]>
Signed-off-by: Pekka Enberg <[email protected]>
------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Jatovm-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel