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