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