Signed-off-by: Tomek Grabiec <tgrab...@gmail.com> --- jit/ostack-bc.c | 18 ++++---- test/arch-x86/Makefile | 2 + test/jit/bytecode-to-ir-stub.c | 10 ++++ test/jit/ostack-bc-test.c | 100 +++++++++++----------------------------- 4 files changed, 48 insertions(+), 82 deletions(-) create mode 100644 test/jit/bytecode-to-ir-stub.c
diff --git a/jit/ostack-bc.c b/jit/ostack-bc.c index 7c6388f..dc56429 100644 --- a/jit/ostack-bc.c +++ b/jit/ostack-bc.c @@ -63,7 +63,7 @@ static int __convert_dup(struct parse_context *ctx, struct expression *value) { struct expression *dup; - dup = dup_expr(ctx, value); + dup = get_pure_expr(ctx, value); convert_expression(ctx, dup); convert_expression(ctx, dup_expr(ctx, expr_get(dup))); @@ -84,7 +84,7 @@ static int __convert_dup_x1(struct parse_context *ctx, struct expression *value1 { struct expression *dup; - dup = dup_expr(ctx, value1); + dup = get_pure_expr(ctx, value1); convert_expression(ctx, dup); convert_expression(ctx, value2); @@ -107,7 +107,7 @@ static int __convert_dup_x2(struct parse_context *ctx, struct expression *value1 { struct expression *dup; - dup = dup_expr(ctx, value1); + dup = get_pure_expr(ctx, value1); convert_expression(ctx, dup); convert_expression(ctx, value3); @@ -132,8 +132,8 @@ static int __convert_dup2(struct parse_context *ctx, struct expression *value1, { struct expression *dup, *dup2; - dup = dup_expr(ctx, value1); - dup2 = dup_expr(ctx, value2); + dup = get_pure_expr(ctx, value1); + dup2 = get_pure_expr(ctx, value2); convert_expression(ctx, dup2); convert_expression(ctx, dup); @@ -163,8 +163,8 @@ static int __convert_dup2_x1(struct parse_context * ctx, struct expression * val { struct expression *dup, *dup2; - dup = dup_expr(ctx, value1); - dup2 = dup_expr(ctx, value2); + dup = get_pure_expr(ctx, value1); + dup2 = get_pure_expr(ctx, value2); convert_expression(ctx, dup2); convert_expression(ctx, dup); @@ -196,8 +196,8 @@ static int __convert_dup2_x2(struct parse_context *ctx, struct expression *value { struct expression *dup, *dup2; - dup = dup_expr(ctx, value1); - dup2 = dup_expr(ctx, value2); + dup = get_pure_expr(ctx, value1); + dup2 = get_pure_expr(ctx, value2); convert_expression(ctx, dup2); convert_expression(ctx, dup); diff --git a/test/arch-x86/Makefile b/test/arch-x86/Makefile index 71e43af..a8f741a 100644 --- a/test/arch-x86/Makefile +++ b/test/arch-x86/Makefile @@ -43,6 +43,7 @@ TOPLEVEL_OBJS := \ jit/fixup-site.o \ jit/interval.o \ jit/method.o \ + jit/ostack-bc.o \ jit/stack-slot.o \ jit/statement.o \ jit/text.o \ @@ -72,6 +73,7 @@ TOPLEVEL_OBJS := \ vm/natives.o \ test/jit/trampoline-stub.o \ test/jit/trace-stub.o \ + test/jit/bytecode-to-ir-stub.o \ test/libharness/libharness.o \ test/vm/classloader-stub.o \ test/vm/preload-stub.o \ diff --git a/test/jit/bytecode-to-ir-stub.c b/test/jit/bytecode-to-ir-stub.c new file mode 100644 index 0000000..3af7e26 --- /dev/null +++ b/test/jit/bytecode-to-ir-stub.c @@ -0,0 +1,10 @@ +#include "jit/compiler.h" +#include "jit/expression.h" + +void convert_expression(struct parse_context *ctx, struct expression *expr) +{ +} + +void convert_statement(struct parse_context *ctx, struct statement *stmt) +{ +} diff --git a/test/jit/ostack-bc-test.c b/test/jit/ostack-bc-test.c index 877aebd..c6292ef 100644 --- a/test/jit/ostack-bc-test.c +++ b/test/jit/ostack-bc-test.c @@ -48,25 +48,19 @@ static void assert_dup_stack(unsigned char opc, struct expression *value) { struct basic_block *bb; struct statement *stmt; - struct statement *stmt2; bb = alloc_simple_bb(&opc, 1); stack_push(bb->mimic_stack, expr_get(value)); convert_to_ir(bb->b_parent); stmt = stmt_entry(bb->stmt_list.next); - stmt2 = stmt_entry(bb->stmt_list.next->next); assert_store_stmt(stmt); assert_ptr_equals(value, to_expr(stmt->store_src)); assert_temporary_expr(stmt->store_dest); - assert_store_stmt(stmt2); - assert_ptr_equals(stmt->store_dest, stmt2->store_src); - assert_temporary_expr(stmt2->store_dest); - - assert_ptr_equals(to_expr(stmt2->store_dest), pop_and_put_expr(bb->mimic_stack)); assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value, pop_and_put_expr(bb->mimic_stack)); assert_true(stack_is_empty(bb->mimic_stack)); @@ -75,7 +69,7 @@ static void assert_dup_stack(unsigned char opc, struct expression *value) static void assert_dup2_stack(unsigned char opc, struct expression *value, struct expression *value2) { - struct statement *stmt, *stmt2, *stmt3, *stmt4; + struct statement *stmt, *stmt2; struct basic_block *bb; if (value->vm_type == J_LONG || value->vm_type == J_DOUBLE) { @@ -91,29 +85,19 @@ static void assert_dup2_stack(unsigned char opc, struct expression *value, struc convert_to_ir(bb->b_parent); stmt = stmt_entry(bb->stmt_list.next); stmt2 = stmt_entry(stmt->stmt_list_node.next); - stmt3 = stmt_entry(stmt2->stmt_list_node.next); - stmt4 = stmt_entry(stmt3->stmt_list_node.next); assert_store_stmt(stmt); - assert_ptr_equals(value, to_expr(stmt->store_src)); + assert_ptr_equals(value2, to_expr(stmt->store_src)); assert_temporary_expr(stmt->store_dest); assert_store_stmt(stmt2); - assert_ptr_equals(value2, to_expr(stmt2->store_src)); + assert_ptr_equals(value, to_expr(stmt2->store_src)); assert_temporary_expr(stmt->store_dest); - assert_store_stmt(stmt3); - assert_ptr_equals(stmt2->store_dest, stmt3->store_src); - assert_temporary_expr(stmt3->store_dest); - - assert_store_stmt(stmt4); - assert_ptr_equals(stmt->store_dest, stmt4->store_src); - assert_temporary_expr(stmt4->store_dest); - - assert_ptr_equals(to_expr(stmt4->store_dest), pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(to_expr(stmt3->store_dest), pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); assert_ptr_equals(to_expr(stmt2->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value, pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value2, pop_and_put_expr(bb->mimic_stack)); assert_true(stack_is_empty(bb->mimic_stack)); @@ -141,7 +125,7 @@ static void assert_dup_x1_stack(unsigned char opc, struct expression *value1, struct expression *value2) { struct basic_block *bb; - struct statement *stmt, *stmt2; + struct statement *stmt; bb = alloc_simple_bb(&opc, 1); @@ -150,19 +134,14 @@ static void assert_dup_x1_stack(unsigned char opc, struct expression *value1, convert_to_ir(bb->b_parent); stmt = stmt_entry(bb->stmt_list.next); - stmt2 = stmt_entry(stmt->stmt_list_node.next); assert_store_stmt(stmt); assert_ptr_equals(value1, to_expr(stmt->store_src)); assert_temporary_expr(stmt->store_dest); - assert_store_stmt(stmt2); - assert_ptr_equals(stmt->store_dest, stmt2->store_src); - assert_temporary_expr(stmt2->store_dest); - - assert_ptr_equals(to_expr(stmt2->store_dest), pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(value2, pop_and_put_expr(bb->mimic_stack)); assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value2, pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value1, pop_and_put_expr(bb->mimic_stack)); assert_true(stack_is_empty(bb->mimic_stack)); @@ -172,7 +151,7 @@ static void assert_dup_x1_stack(unsigned char opc, struct expression *value1, static void assert_dup2_x1_stack(unsigned char opc, struct expression *value1, struct expression *value2, struct expression *value3) { - struct statement *stmt, *stmt2, *stmt3, *stmt4; + struct statement *stmt, *stmt2; struct basic_block *bb; if (value1->vm_type == J_LONG || value2->vm_type == J_DOUBLE) { @@ -189,30 +168,20 @@ static void assert_dup2_x1_stack(unsigned char opc, struct expression *value1, convert_to_ir(bb->b_parent); stmt = stmt_entry(bb->stmt_list.next); stmt2 = stmt_entry(stmt->stmt_list_node.next); - stmt3 = stmt_entry(stmt2->stmt_list_node.next); - stmt4 = stmt_entry(stmt3->stmt_list_node.next); assert_store_stmt(stmt); - assert_ptr_equals(value1, to_expr(stmt->store_src)); + assert_ptr_equals(value2, to_expr(stmt->store_src)); assert_temporary_expr(stmt->store_dest); assert_store_stmt(stmt2); - assert_ptr_equals(value2, to_expr(stmt2->store_src)); + assert_ptr_equals(value1, to_expr(stmt2->store_src)); assert_temporary_expr(stmt2->store_dest); - assert_store_stmt(stmt3); - assert_ptr_equals(stmt2->store_dest, stmt3->store_src); - assert_temporary_expr(stmt3->store_dest); - - assert_store_stmt(stmt4); - assert_ptr_equals(stmt->store_dest, stmt4->store_src); - assert_temporary_expr(stmt4->store_dest); - - assert_ptr_equals(to_expr(stmt4->store_dest), pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(to_expr(stmt3->store_dest), pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(value3, pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); assert_ptr_equals(to_expr(stmt2->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value3, pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value1, pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value2, pop_and_put_expr(bb->mimic_stack)); assert_true(stack_is_empty(bb->mimic_stack)); @@ -240,7 +209,7 @@ static void assert_dup_x2_stack(unsigned char opc, struct expression *value1, struct expression *value2, struct expression *value3) { struct basic_block *bb; - struct statement *stmt, *stmt2; + struct statement *stmt; bb = alloc_simple_bb(&opc, 1); @@ -250,20 +219,15 @@ static void assert_dup_x2_stack(unsigned char opc, struct expression *value1, convert_to_ir(bb->b_parent); stmt = stmt_entry(bb->stmt_list.next); - stmt2 = stmt_entry(stmt->stmt_list_node.next); assert_store_stmt(stmt); assert_ptr_equals(value1, to_expr(stmt->store_src)); assert_temporary_expr(stmt->store_dest); - assert_store_stmt(stmt2); - assert_ptr_equals(stmt->store_dest, stmt2->store_src); - assert_temporary_expr(stmt2->store_dest); - - assert_ptr_equals(to_expr(stmt2->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); assert_ptr_equals(value2, pop_and_put_expr(bb->mimic_stack)); assert_ptr_equals(value3, pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value1, pop_and_put_expr(bb->mimic_stack)); assert_true(stack_is_empty(bb->mimic_stack)); @@ -274,7 +238,7 @@ static void assert_dup2_x2_stack(unsigned char opc, struct expression *value1, struct expression *value2, struct expression *value3, struct expression *value4) { - struct statement *stmt, *stmt2, *stmt3, *stmt4; + struct statement *stmt, *stmt2; struct basic_block *bb; if (value1->vm_type == J_LONG || value1->vm_type == J_DOUBLE) { @@ -302,31 +266,21 @@ static void assert_dup2_x2_stack(unsigned char opc, struct expression *value1, convert_to_ir(bb->b_parent); stmt = stmt_entry(bb->stmt_list.next); stmt2 = stmt_entry(stmt->stmt_list_node.next); - stmt3 = stmt_entry(stmt2->stmt_list_node.next); - stmt4 = stmt_entry(stmt3->stmt_list_node.next); assert_store_stmt(stmt); - assert_ptr_equals(value1, to_expr(stmt->store_src)); + assert_ptr_equals(value2, to_expr(stmt->store_src)); assert_temporary_expr(stmt->store_dest); assert_store_stmt(stmt2); - assert_ptr_equals(value2, to_expr(stmt2->store_src)); + assert_ptr_equals(value1, to_expr(stmt2->store_src)); assert_temporary_expr(stmt2->store_dest); - assert_store_stmt(stmt3); - assert_ptr_equals(stmt2->store_dest, stmt3->store_src); - assert_temporary_expr(stmt3->store_dest); - - assert_store_stmt(stmt4); - assert_ptr_equals(stmt->store_dest, stmt4->store_src); - assert_temporary_expr(stmt4->store_dest); - - assert_ptr_equals(to_expr(stmt4->store_dest), pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(to_expr(stmt3->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(to_expr(stmt2->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); assert_ptr_equals(value3, pop_and_put_expr(bb->mimic_stack)); assert_ptr_equals(value4, pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(to_expr(stmt->store_dest), pop_and_put_expr(bb->mimic_stack)); - assert_ptr_equals(to_expr(stmt2->store_dest), pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value1, pop_and_put_expr(bb->mimic_stack)); + assert_ptr_equals(value2, pop_and_put_expr(bb->mimic_stack)); assert_true(stack_is_empty(bb->mimic_stack)); -- 1.6.0.6 ------------------------------------------------------------------------------ _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel