Branch: refs/heads/master
Home:   http://github.com/penberg/jato

Commit: 87449e2786a026efcd1716b2dd4ee30437a954a8
    
http://github.com/penberg/jato/commit/87449e2786a026efcd1716b2dd4ee30437a954a8
Author: Tomek Grabiec <tgrab...@gmail.com>
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 <arthur.huil...@free.fr>
Signed-off-by: Tomek Grabiec <tgrab...@gmail.com>
Signed-off-by: Pekka Enberg <penb...@cs.helsinki.fi>



------------------------------------------------------------------------------
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
Jatovm-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/jatovm-devel

Reply via email to