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

Reply via email to