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