Signed-off-by: Tomek Grabiec <tgrab...@gmail.com>
---
 include/jit/expression.h |    2 +-
 jit/load-store-bc.c      |   38 +-------------------------------------
 jit/object-bc.c          |    4 ++--
 jit/ostack-bc.c          |    3 ++-
 4 files changed, 6 insertions(+), 41 deletions(-)

diff --git a/include/jit/expression.h b/include/jit/expression.h
index 4af40ad..c0d420e 100644
--- a/include/jit/expression.h
+++ b/include/jit/expression.h
@@ -310,7 +310,7 @@ struct expression *exception_ref_expr(void);
 struct expression *null_check_expr(struct expression *);
 struct expression *array_size_check_expr(struct expression *);
 struct expression *multiarray_size_check_expr(struct expression *);
-struct expression *copy_expr_value(struct parse_context *, struct expression 
*);
+struct expression *dup_expr(struct parse_context *, struct expression *);
 
 unsigned long nr_args(struct expression *);
 int expr_nr_kids(struct expression *);
diff --git a/jit/load-store-bc.c b/jit/load-store-bc.c
index b31e87f..bd22074 100644
--- a/jit/load-store-bc.c
+++ b/jit/load-store-bc.c
@@ -179,20 +179,13 @@ int convert_ldc2_w(struct parse_context *ctx)
 
 static int convert_load(struct parse_context *ctx, unsigned char index, enum 
vm_type type)
 {
-       struct expression *tmp_expr;
        struct expression *expr;
 
        expr = local_expr(type, index);
        if (!expr)
                return -ENOMEM;
 
-       tmp_expr = copy_expr_value(ctx, expr);
-       if (!tmp_expr) {
-               expr_put(expr);
-               return -ENOMEM;
-       }
-
-       convert_expression(ctx, tmp_expr);
+       convert_expression(ctx, dup_expr(ctx, expr));
        return 0;
 }
 
@@ -354,32 +347,3 @@ int convert_astore_n(struct parse_context *ctx)
 {
        return convert_store(ctx, ctx->opc - OPC_ASTORE_0, J_REFERENCE);
 }
-
-struct expression *
-copy_expr_value(struct parse_context *ctx, struct expression *expr)
-
-{      struct var_info *tmp_high;
-       struct var_info *tmp_low;
-       struct expression *dest;
-       struct statement *stmt;
-
-       tmp_low = get_var(ctx->cu);
-
-       if (expr->vm_type == J_LONG)
-               tmp_high = get_var(ctx->cu);
-       else
-               tmp_high = NULL;
-
-       dest = temporary_expr(expr->vm_type, tmp_high, tmp_low);
-
-       stmt = alloc_statement(STMT_STORE);
-       if (!stmt)
-               return NULL;
-
-       expr_get(dest);
-       stmt->store_dest = &dest->node;
-       stmt->store_src  = &expr->node;
-       convert_statement(ctx, stmt);
-
-       return dest;
-}
diff --git a/jit/object-bc.c b/jit/object-bc.c
index 3866a64..76d5b1d 100644
--- a/jit/object-bc.c
+++ b/jit/object-bc.c
@@ -178,7 +178,7 @@ int convert_array_load(struct parse_context *ctx, enum 
vm_type type)
 
        temporary = get_var(ctx->cu);
        dest_expr = temporary_expr(type, NULL, temporary);
-       
+
        store_stmt->store_src = &src_expr->node;
        store_stmt->store_dest = &dest_expr->node;
 
@@ -490,7 +490,7 @@ int convert_checkcast(struct parse_context *ctx)
        struct statement *checkcast_stmt;
        unsigned long type_idx;
 
-       object_ref_tmp = copy_expr_value(ctx, stack_pop(ctx->bb->mimic_stack));
+       object_ref_tmp = dup_expr(ctx, stack_pop(ctx->bb->mimic_stack));
 
        type_idx = bytecode_read_u16(ctx->buffer);
        class = vm_class_resolve_class(ctx->cu->method->class, type_idx);
diff --git a/jit/ostack-bc.c b/jit/ostack-bc.c
index 87ace8a..2c6ab5c 100644
--- a/jit/ostack-bc.c
+++ b/jit/ostack-bc.c
@@ -34,7 +34,8 @@ int convert_pop(struct parse_context *ctx)
        return 0;
 }
 
-static struct expression *dup_expr(struct parse_context *ctx, struct 
expression *expr)
+struct expression *
+dup_expr(struct parse_context *ctx, struct expression *expr)
 {
        struct expression *dest;
        struct statement *stmt;
-- 
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