This lets us to drop basic block sorting because basic blocks
are ordered automatically after split.

Signed-off-by: Tomek Grabiec <tgrab...@gmail.com>
---
 jit/basic-block.c            |    7 +++++--
 jit/compiler.c               |    4 ----
 test/jit/cfg-analyzer-test.c |   12 ++++++------
 3 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/jit/basic-block.c b/jit/basic-block.c
index e22cfa9..f46b632 100644
--- a/jit/basic-block.c
+++ b/jit/basic-block.c
@@ -104,10 +104,13 @@ struct basic_block *bb_split(struct basic_block *orig_bb, 
unsigned long offset)
        if (offset < orig_bb->start || offset >= orig_bb->end)
                return NULL;
 
-       new_bb = get_basic_block(orig_bb->b_parent, offset, orig_bb->end);
-       if (new_bb == NULL)
+       new_bb = alloc_basic_block(orig_bb->b_parent, offset, orig_bb->end);
+       if (!new_bb)
                return NULL;
 
+       /* Insert new basic block after org_bb. */
+       list_add(&new_bb->bb_list_node, &orig_bb->bb_list_node);
+
        orig_bb->end = offset;
 
        new_bb->successors = orig_bb->successors;
diff --git a/jit/compiler.c b/jit/compiler.c
index e88dd55..5938e73 100644
--- a/jit/compiler.c
+++ b/jit/compiler.c
@@ -70,10 +70,6 @@ int compile(struct compilation_unit *cu)
        if (err)
                goto out;
 
-       err = sort_basic_blocks(cu);
-       if (err)
-               goto out;
-
        if (opt_trace_cfg)
                trace_cfg(cu);
 
diff --git a/test/jit/cfg-analyzer-test.c b/test/jit/cfg-analyzer-test.c
index 2744e93..c921332 100644
--- a/test/jit/cfg-analyzer-test.c
+++ b/test/jit/cfg-analyzer-test.c
@@ -149,14 +149,14 @@ void 
test_multiple_branch_with_target_instruction_splitting(void)
 
        assert_basic_block(cu, 0, 4, bb1);
        assert_basic_block(cu, 4, 6, bb2);
-       assert_basic_block(cu, 6, 12, bb4);
-       assert_basic_block(cu, 12, 14, bb3);
+       assert_basic_block(cu, 6, 12, bb3);
+       assert_basic_block(cu, 12, 14, bb4);
        assert_basic_block(cu, 14, 15, bb5);
 
-       assert_basic_block_successors((struct basic_block*[]){bb2, bb4}, 2, 
bb1);
-       assert_basic_block_successors((struct basic_block*[]){bb4     }, 1, 
bb2);
-       assert_basic_block_successors((struct basic_block*[]){bb3, bb5}, 2, 
bb4);
-       assert_basic_block_successors((struct basic_block*[]){bb5     }, 1, 
bb3);
+       assert_basic_block_successors((struct basic_block*[]){bb2, bb3}, 2, 
bb1);
+       assert_basic_block_successors((struct basic_block*[]){bb3     }, 1, 
bb2);
+       assert_basic_block_successors((struct basic_block*[]){bb4, bb5}, 2, 
bb3);
+       assert_basic_block_successors((struct basic_block*[]){bb5     }, 1, 
bb4);
        assert_basic_block_successors((struct basic_block*[]){        }, 0, 
bb5);
 
        free_compilation_unit(cu);
-- 
1.6.0.6


------------------------------------------------------------------------------
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