Signed-off-by: Tomek Grabiec <[email protected]>
---
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/jatovm-devel