x86-64 emitters need a way to determine the required operand size. We modify get_var() so it stores vm_type in struct var_info, making it available from struct operand.
Signed-off-by: Eduard - Gabriel Munteanu <eduard.munte...@linux360.ro> --- arch/x86/include/arch/registers_32.h | 3 + arch/x86/include/arch/registers_64.h | 2 + arch/x86/insn-selector_32.brg | 70 ++++++++++++++++---------------- include/jit/compilation-unit.h | 3 +- include/jit/vars.h | 4 +- jit/bytecode-to-ir.c | 4 +- jit/compilation-unit.c | 8 ++- jit/object-bc.c | 2 +- jit/ostack-bc.c | 4 +- test/arch-x86/insn-selector-test_32.c | 8 ++-- test/jit/arithmetic-bc-test.c | 10 ++-- test/jit/branch-bc-test.c | 6 +- test/jit/invoke-bc-test.c | 2 +- test/jit/linear-scan-test.c | 10 ++-- test/jit/liveness-test.c | 8 ++-- test/jit/load-store-bc-test.c | 2 +- test/jit/object-bc-test.c | 2 +- test/jit/spill-reload-test.c | 10 ++-- test/jit/typeconv-bc-test.c | 2 +- 19 files changed, 85 insertions(+), 75 deletions(-) diff --git a/arch/x86/include/arch/registers_32.h b/arch/x86/include/arch/registers_32.h index 1547e33..ce9058e 100644 --- a/arch/x86/include/arch/registers_32.h +++ b/arch/x86/include/arch/registers_32.h @@ -4,6 +4,7 @@ #include <limits.h> #include <stdbool.h> #include <assert.h> +#include <vm/types.h> enum machine_reg { REG_EAX, @@ -41,6 +42,8 @@ enum machine_reg { REG_UNASSIGNED = INT_MAX, }; +#define GPR_VM_TYPE J_INT + const char *reg_name(enum machine_reg reg); enum machine_reg_type reg_type(enum machine_reg reg); diff --git a/arch/x86/include/arch/registers_64.h b/arch/x86/include/arch/registers_64.h index a354403..0725686 100644 --- a/arch/x86/include/arch/registers_64.h +++ b/arch/x86/include/arch/registers_64.h @@ -39,6 +39,8 @@ enum machine_reg { REG_UNASSIGNED = INT_MAX, }; +#define GPR_VM_TYPE J_LONG + const char *reg_name(enum machine_reg reg); static inline bool is_caller_saved_reg(enum machine_reg reg) diff --git a/arch/x86/insn-selector_32.brg b/arch/x86/insn-selector_32.brg index 2fe197c..c0f418e 100644 --- a/arch/x86/insn-selector_32.brg +++ b/arch/x86/insn-selector_32.brg @@ -157,7 +157,7 @@ reg: freg 1 struct var_info *result, *in, *esp; in = state->reg1; - result = get_var(s->b_parent); + result = get_var(s->b_parent, J_INT); state->reg1 = result; esp = get_fixed_var(s->b_parent, REG_ESP); @@ -187,13 +187,13 @@ reg: EXPR_VALUE 0 expr = to_expr(tree); - result = get_var(s->b_parent); + result = get_var(s->b_parent, J_INT); state->reg1 = result; select_insn(s, tree, imm_reg_insn(INSN_MOV_IMM_REG, expr->value & ~0UL, result)); if (expr->vm_type == J_LONG) { - result = get_var(s->b_parent); + result = get_var(s->b_parent, J_INT); state->reg2 = result; select_insn(s, tree, imm_reg_insn(INSN_MOV_IMM_REG, expr->value >> 32, state->reg2)); } @@ -209,7 +209,7 @@ reg: EXPR_LOCAL 1 expr = to_expr(tree); slot = get_local_slot(cu->stack_frame, expr->local_index); - result = get_var(s->b_parent); + result = get_var(s->b_parent, J_INT); state->reg1 = result; select_insn(s, tree, memlocal_reg_insn(INSN_MOV_MEMLOCAL_REG, slot, result)); @@ -217,7 +217,7 @@ reg: EXPR_LOCAL 1 if (expr->vm_type == J_LONG) { slot = get_local_slot(cu->stack_frame, expr->local_index + 1); - result = get_var(s->b_parent); + result = get_var(s->b_parent, J_INT); state->reg2 = result; select_insn(s, tree, memlocal_reg_insn(INSN_MOV_MEMLOCAL_REG, slot, result)); @@ -390,9 +390,9 @@ reg: OP_MUL_64(reg, reg) 1 edx = get_fixed_var(s->b_parent, REG_EDX); state->reg1 = eax; - state->reg2 = get_var(s->b_parent); + state->reg2 = get_var(s->b_parent, J_INT); - tmp1 = get_var(s->b_parent); + tmp1 = get_var(s->b_parent, J_INT); select_insn(s, tree, reg_reg_insn(INSN_MOV_REG_REG, state->right->reg2, tmp1)); select_insn(s, tree, reg_reg_insn(INSN_MUL_REG_REG, state->left->reg1, tmp1)); select_insn(s, tree, reg_reg_insn(INSN_MOV_REG_REG, state->left->reg2, state->reg2)); @@ -691,11 +691,11 @@ reg: EXPR_INVOKE(arg) 1 cu = method->compilation_unit; eax = get_fixed_var(s->b_parent, REG_EAX); - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); if (get_method_return_type(method->type) == J_LONG) { edx = get_fixed_var(s->b_parent, REG_EDX); - state->reg2 = get_var(s->b_parent); + state->reg2 = get_var(s->b_parent, J_INT); } invoke(s, tree, cu, method); @@ -722,18 +722,18 @@ reg: EXPR_INVOKEINTERFACE(arg) 1 method_offset = expr_method_index(expr) * sizeof(void *); eax = get_fixed_var(s->b_parent, REG_EAX); - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); if (get_method_return_type(method->type) == J_LONG) { edx = get_fixed_var(s->b_parent, REG_EDX); - state->reg2 = get_var(s->b_parent); + state->reg2 = get_var(s->b_parent, J_INT); } /* object reference */ objectref_expr = get_first_arg(expr->args_list); if (expr_type(objectref_expr) == EXPR_VALUE) { - call_target = get_var(s->b_parent); + call_target = get_var(s->b_parent, J_INT); select_insn(s, tree, imm_reg_insn(INSN_MOV_IMM_REG, objectref_expr->value, call_target)); } else { call_target = state->left->reg1; @@ -793,11 +793,11 @@ reg: EXPR_INVOKEVIRTUAL(arg) 1 method = expr->target_method; eax = get_fixed_var(s->b_parent, REG_EAX); - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); if (get_method_return_type(method->type) == J_LONG) { edx = get_fixed_var(s->b_parent, REG_EDX); - state->reg2 = get_var(s->b_parent); + state->reg2 = get_var(s->b_parent, J_INT); } invokevirtual(state, s, tree); @@ -827,7 +827,7 @@ reg: OP_CMPL(freg, freg) 1 { struct var_info *esp, *eax; - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); esp = get_fixed_var(s->b_parent, REG_ESP); eax = get_fixed_var(s->b_parent, REG_EAX); @@ -856,7 +856,7 @@ reg: OP_CMP(reg, EXPR_VALUE) 1 expr = to_expr(tree); right = to_expr(expr->binary_right); - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); eax = get_fixed_var(s->b_parent, REG_EAX); if (right->vm_type != J_LONG) { @@ -977,7 +977,7 @@ reg: EXPR_CLASS_FIELD 1 expr = to_expr(tree); - out = get_var(s->b_parent); + out = get_var(s->b_parent, J_INT); state->reg1 = out; vmf = expr->class_field; @@ -1001,7 +1001,7 @@ reg: EXPR_CLASS_FIELD 1 select_insn(s, tree, mov_insn); if (expr->vm_type == J_LONG) { - state->reg2 = get_var(s->b_parent); + state->reg2 = get_var(s->b_parent, J_INT); select_insn(s, tree, memdisp_reg_insn(INSN_MOV_MEMDISP_REG, (unsigned long) vmc->static_values + vmf->offset + 4, state->reg2)); @@ -1017,13 +1017,13 @@ reg: EXPR_INSTANCE_FIELD(reg) 1 expr = to_expr(tree); base = state->left->reg1; - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); offset = sizeof(struct vm_object) + expr->instance_field->offset; select_insn(s, tree, membase_reg_insn(INSN_MOV_MEMBASE_REG, base, offset, state->reg1)); if (expr->vm_type == J_LONG) { - state->reg2 = get_var(s->b_parent); + state->reg2 = get_var(s->b_parent, J_INT); select_insn(s, tree, membase_reg_insn(INSN_MOV_MEMBASE_REG, base, offset + 4, state->reg2)); } } @@ -1096,7 +1096,7 @@ reg: EXPR_NULL_CHECK(EXPR_LOCAL) struct expression *expr; struct expression *local; - reg = get_var(s->b_parent); + reg = get_var(s->b_parent, J_INT); state->reg1 = reg; expr = to_expr(tree); @@ -1179,7 +1179,7 @@ reg: EXPR_ARRAYLENGTH(reg) arrayref = state->left->reg1; - arraylength = get_var(s->b_parent); + arraylength = get_var(s->b_parent, J_INT); state->reg1 = arraylength; select_insn(s, tree, membase_reg_insn(INSN_MOV_MEMBASE_REG, arrayref, @@ -1214,8 +1214,8 @@ reg: EXPR_CONVERSION(reg) src = to_expr(expr->from_expression); if (src->vm_type == J_INT && expr->vm_type == J_LONG) { - state->reg1 = get_var(s->b_parent); - state->reg2 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); + state->reg2 = get_var(s->b_parent, J_INT); select_insn(s, tree, reg_reg_insn(INSN_MOV_REG_REG, state->left->reg1, state->reg1)); select_insn(s, tree, reg_reg_insn(INSN_MOV_REG_REG, state->left->reg1, state->reg2)); @@ -1223,11 +1223,11 @@ reg: EXPR_CONVERSION(reg) } else if (src->vm_type == J_LONG && expr->vm_type == J_INT) { state->reg1 = state->left->reg1; } else if (src->vm_type == J_INT && expr->vm_type == J_BYTE) { - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); select_insn(s, tree, reg_reg_insn(INSN_MOVSX_8_REG_REG, state->left->reg1, state->reg1)); } else if (src->vm_type == J_INT && expr->vm_type == J_CHAR) { - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); select_insn(s, tree, reg_reg_insn(INSN_MOVSX_16_REG_REG, state->left->reg1, state->reg1)); } else { @@ -1261,7 +1261,7 @@ reg: EXPR_CONVERSION_FROM_FLOAT(freg) src = to_expr(expr->from_expression); if (src->vm_type == J_FLOAT && expr->vm_type == J_INT) { - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); select_insn(s, tree, reg_reg_insn(INSN_CONV_FPU_TO_GPR, state->left->reg1, state->reg1)); } else { @@ -1332,7 +1332,7 @@ reg: EXPR_EXCEPTION_REF struct var_info *result; struct stack_slot *slot = s->b_parent->exception_spill_slot; - result = get_var(s->b_parent); + result = get_var(s->b_parent, J_INT); state->reg1 = result; select_insn(s, tree, memlocal_reg_insn(INSN_MOV_MEMLOCAL_REG, slot, result)); @@ -1543,7 +1543,7 @@ array_deref: EXPR_ARRAY_DEREF(reg, reg) 2 state_base = state->left->reg1; - base = get_var(s->b_parent); + base = get_var(s->b_parent, J_INT); state->reg1 = base; state->reg2 = state->right->reg1; @@ -1637,10 +1637,10 @@ array_check: EXPR_ARRAY_DEREF(reg, reg) 2 state_base = state->left->reg1; state_index = state->right->reg1; - base = get_var(s->b_parent); + base = get_var(s->b_parent, J_INT); state->reg1 = base; - index = get_var(s->b_parent); + index = get_var(s->b_parent, J_INT); state->reg2 = index; select_insn(s, tree, reg_reg_insn(INSN_MOV_REG_REG, state_base, base)); @@ -1747,7 +1747,7 @@ static void select_exception_test(struct basic_block *bb, unsigned long exception_guard_offset; struct var_info *reg; - reg = get_var(bb->b_parent); + reg = get_var(bb->b_parent, J_INT); exception_guard_offset = get_thread_local_offset(&exception_guard); @@ -1890,11 +1890,11 @@ emulate_op_64(struct _MBState *state, struct basic_block *s, struct var_info *eax, *edx = NULL; eax = get_fixed_var(s->b_parent, REG_EAX); - state->reg1 = get_var(s->b_parent); + state->reg1 = get_var(s->b_parent, J_INT); if (return_type == J_LONG) { edx = get_fixed_var(s->b_parent, REG_EDX); - state->reg2 = get_var(s->b_parent); + state->reg2 = get_var(s->b_parent, J_INT); } select_insn(s, tree, reg_insn(INSN_PUSH_REG, state->right->reg2)); select_insn(s, tree, reg_insn(INSN_PUSH_REG, state->right->reg1)); @@ -1968,7 +1968,7 @@ static void invokevirtual(struct _MBState *state, struct basic_block *s, struct objectref_expr = get_first_arg(expr->args_list); if (expr_type(objectref_expr) == EXPR_VALUE) { - call_target = get_var(s->b_parent); + call_target = get_var(s->b_parent, J_INT); select_insn(s, tree, imm_reg_insn(INSN_MOV_IMM_REG, objectref_expr->value, call_target)); } else { call_target = state->left->reg1; diff --git a/include/jit/compilation-unit.h b/include/jit/compilation-unit.h index 968cf9e..1066d4b 100644 --- a/include/jit/compilation-unit.h +++ b/include/jit/compilation-unit.h @@ -6,6 +6,7 @@ #include "lib/list.h" #include "vm/stack.h" #include "vm/static.h" +#include "vm/types.h" #include "arch/stack-frame.h" @@ -57,7 +58,7 @@ struct compilation_unit { struct compilation_unit *compilation_unit_alloc(struct vm_method *); int init_stack_slots(struct compilation_unit *cu); void free_compilation_unit(struct compilation_unit *); -struct var_info *get_var(struct compilation_unit *); +struct var_info *get_var(struct compilation_unit *, enum vm_type); struct var_info *get_fpu_var(struct compilation_unit *); struct var_info *get_fixed_var(struct compilation_unit *, enum machine_reg); struct basic_block *find_bb(struct compilation_unit *, unsigned long); diff --git a/include/jit/vars.h b/include/jit/vars.h index 9a89ff6..482f10a 100644 --- a/include/jit/vars.h +++ b/include/jit/vars.h @@ -3,6 +3,7 @@ #include "lib/list.h" #include "arch/registers.h" +#include "vm/types.h" #include <stdbool.h> #include <assert.h> @@ -102,7 +103,8 @@ struct var_info { unsigned long vreg; struct var_info *next; struct live_interval *interval; - enum machine_reg_type type; + enum machine_reg_type type; + enum vm_type vm_type; }; struct live_interval *alloc_interval(struct var_info *); diff --git a/jit/bytecode-to-ir.c b/jit/bytecode-to-ir.c index 7cf6df9..decabb4 100644 --- a/jit/bytecode-to-ir.c +++ b/jit/bytecode-to-ir.c @@ -334,9 +334,9 @@ static void pick_and_propagate_temporaries(struct basic_block *bb, bool entry) if (expr->entry != entry) continue; - tmp_low = get_var(bb->b_parent); + tmp_low = get_var(bb->b_parent, J_INT); if (expr->vm_type == J_LONG) - tmp_high = get_var(bb->b_parent); + tmp_high = get_var(bb->b_parent, J_INT); else tmp_high = NULL; diff --git a/jit/compilation-unit.c b/jit/compilation-unit.c index c6e8ef1..2f1cb26 100644 --- a/jit/compilation-unit.c +++ b/jit/compilation-unit.c @@ -110,7 +110,7 @@ void free_compilation_unit(struct compilation_unit *cu) free(cu); } -struct var_info *get_var(struct compilation_unit *cu) +struct var_info *get_var(struct compilation_unit *cu, enum vm_type vm_type) { struct var_info *ret; @@ -123,6 +123,7 @@ struct var_info *get_var(struct compilation_unit *cu) ret->interval = alloc_interval(ret); ret->type = REG_TYPE_GPR; + ret->vm_type = vm_type; cu->var_infos = ret; out: @@ -131,7 +132,7 @@ struct var_info *get_var(struct compilation_unit *cu) struct var_info *get_fpu_var(struct compilation_unit *cu) { - struct var_info *ret = get_var(cu); + struct var_info *ret = get_var(cu, J_FLOAT); ret->type = REG_TYPE_FPU; @@ -142,11 +143,12 @@ struct var_info *get_fixed_var(struct compilation_unit *cu, enum machine_reg reg { struct var_info *ret; - ret = get_var(cu); + ret = get_var(cu, J_INT); if (ret) { ret->interval->reg = reg; ret->interval->fixed_reg = true; ret->type = reg_type(reg); + ret->vm_type = GPR_VM_TYPE; } return ret; diff --git a/jit/object-bc.c b/jit/object-bc.c index bc45396..e4eb12d 100644 --- a/jit/object-bc.c +++ b/jit/object-bc.c @@ -210,7 +210,7 @@ static int convert_array_load(struct parse_context *ctx, enum vm_type type) index_pure = get_pure_expr(ctx, index); src_expr = array_deref_expr(type, arrayref_pure, index_pure); - temporary = get_var(ctx->cu); + temporary = get_var(ctx->cu, J_INT); dest_expr = temporary_expr(type, NULL, temporary); store_stmt->store_src = &src_expr->node; diff --git a/jit/ostack-bc.c b/jit/ostack-bc.c index 7ddff3d..7c6388f 100644 --- a/jit/ostack-bc.c +++ b/jit/ostack-bc.c @@ -42,10 +42,10 @@ dup_expr(struct parse_context *ctx, struct expression *expr) struct statement *stmt; struct var_info *tmp_low, *tmp_high = NULL; - tmp_low = get_var(ctx->cu); + tmp_low = get_var(ctx->cu, J_INT); if (expr->vm_type == J_LONG) { - tmp_high = get_var(ctx->cu); + tmp_high = get_var(ctx->cu, J_INT); } dest = temporary_expr(expr->vm_type, tmp_high, tmp_low); diff --git a/test/arch-x86/insn-selector-test_32.c b/test/arch-x86/insn-selector-test_32.c index 8cf18d6..49336df 100644 --- a/test/arch-x86/insn-selector-test_32.c +++ b/test/arch-x86/insn-selector-test_32.c @@ -809,8 +809,8 @@ static void assert_select_if_statement_reg_reg(enum insn_type expected, }; cu = compilation_unit_alloc(&method); - src = get_var(cu); - dst = get_var(cu); + src = get_var(cu, J_INT); + dst = get_var(cu, J_INT); bb = get_basic_block(cu, 0, 1); true_bb = get_basic_block(cu, 1, 2); @@ -1053,7 +1053,7 @@ void test_select_store_value_to_var(void) cu = compilation_unit_alloc(&method); - temporary = get_var(cu); + temporary = get_var(cu, J_INT); store_dest = temporary_expr(J_REFERENCE, NULL, temporary); store_src = value_expr(J_REFERENCE, 0xdeadbeef); @@ -1092,7 +1092,7 @@ void test_select_store_var_to_local(void) cu = compilation_unit_alloc(&method); store_dest = local_expr(J_INT, 0); - temporary = get_var(cu); + temporary = get_var(cu, J_INT); store_src = temporary_expr(J_INT, NULL, temporary); stmt = alloc_statement(STMT_STORE); diff --git a/test/jit/arithmetic-bc-test.c b/test/jit/arithmetic-bc-test.c index 87f8985..153b71e 100644 --- a/test/jit/arithmetic-bc-test.c +++ b/test/jit/arithmetic-bc-test.c @@ -41,10 +41,10 @@ static void assert_convert_binop(enum vm_type vm_type, bb = __alloc_simple_bb(&method); - temporary = get_var(bb->b_parent); + temporary = get_var(bb->b_parent, J_INT); left = temporary_expr(vm_type, NULL, temporary); - temporary = get_var(bb->b_parent); + temporary = get_var(bb->b_parent, J_INT); right = temporary_expr(vm_type, NULL, temporary); stack_push(bb->mimic_stack, left); @@ -115,7 +115,7 @@ static void assert_convert_unop(enum vm_type vm_type, bb = __alloc_simple_bb(&method); - temporary = get_var(bb->b_parent); + temporary = get_var(bb->b_parent, J_INT); expression = temporary_expr(vm_type, NULL, temporary); stack_push(bb->mimic_stack, expression); @@ -223,10 +223,10 @@ static void assert_convert_cmp(unsigned char opc, enum binary_operator op, bb = __alloc_simple_bb(&method); - temporary = get_var(bb->b_parent); + temporary = get_var(bb->b_parent, J_INT); left = temporary_expr(type, NULL, temporary); - temporary = get_var(bb->b_parent); + temporary = get_var(bb->b_parent, J_INT); right = temporary_expr(type, NULL, temporary); stack_push(bb->mimic_stack, left); diff --git a/test/jit/branch-bc-test.c b/test/jit/branch-bc-test.c index 3557afe..b393bd0 100644 --- a/test/jit/branch-bc-test.c +++ b/test/jit/branch-bc-test.c @@ -58,7 +58,7 @@ static void assert_convert_if(enum binary_operator expected_operator, list_add_tail(&bb->bb_list_node, &cu->bb_list); list_add_tail(&target_bb->bb_list_node, &cu->bb_list); - temporary = get_var(cu); + temporary = get_var(cu, J_INT); if_value = temporary_expr(J_INT, NULL, temporary); stack_push(branch_bb->mimic_stack, if_value); @@ -108,11 +108,11 @@ static void assert_convert_if_cmp(enum binary_operator expected_operator, list_add_tail(&stmt_bb->bb_list_node, &cu->bb_list); list_add_tail(&true_bb->bb_list_node, &cu->bb_list); - temporary = get_var(cu); + temporary = get_var(cu, J_INT); if_value1 = temporary_expr(vm_type, NULL, temporary); stack_push(stmt_bb->mimic_stack, if_value1); - temporary = get_var(cu); + temporary = get_var(cu, J_INT); if_value2 = temporary_expr(vm_type, NULL, temporary); stack_push(stmt_bb->mimic_stack, if_value2); diff --git a/test/jit/invoke-bc-test.c b/test/jit/invoke-bc-test.c index 5415e4c..647d3f4 100644 --- a/test/jit/invoke-bc-test.c +++ b/test/jit/invoke-bc-test.c @@ -25,7 +25,7 @@ static void assert_convert_return(enum vm_type vm_type, unsigned char opc) struct basic_block *bb; bb = __alloc_simple_bb(&method); - temporary = get_var(bb->b_parent); + temporary = get_var(bb->b_parent, J_INT); return_value = temporary_expr(vm_type, NULL, temporary); stack_push(bb->mimic_stack, return_value); convert_to_ir(bb->b_parent); diff --git a/test/jit/linear-scan-test.c b/test/jit/linear-scan-test.c index 7cd0484..8b581f9 100644 --- a/test/jit/linear-scan-test.c +++ b/test/jit/linear-scan-test.c @@ -18,11 +18,11 @@ void test_allocates_different_registers_for_overlapping_intervals(void) cu = compilation_unit_alloc(&method); - v1 = get_var(cu); + v1 = get_var(cu, J_INT); v1->interval->range.start = 0; v1->interval->range.end = 2; - v2 = get_var(cu); + v2 = get_var(cu, J_INT); v2->interval->range.start = 1; v2->interval->range.end = 2; @@ -41,11 +41,11 @@ void test_reuses_registers_for_non_overlapping_intervals(void) cu = compilation_unit_alloc(&method); - v1 = get_var(cu); + v1 = get_var(cu, J_INT); v1->interval->range.start = 0; v1->interval->range.end = 2; - v2 = get_var(cu); + v2 = get_var(cu, J_INT); v2->interval->range.start = 2; v2->interval->range.end = 4; @@ -68,7 +68,7 @@ void test_honors_fixed_interval_register_constraint_for_overlapping_intervals(vo v1->interval->range.start = 0; v1->interval->range.end = 2; - v2 = get_var(cu); + v2 = get_var(cu, J_INT); v2->interval->range.start = 0; v2->interval->range.end = 2; diff --git a/test/jit/liveness-test.c b/test/jit/liveness-test.c index d6e5198..f154206 100644 --- a/test/jit/liveness-test.c +++ b/test/jit/liveness-test.c @@ -39,8 +39,8 @@ void test_variable_range_limited_to_basic_block(void) struct insn *insn[3]; cu = compilation_unit_alloc(&method); - r1 = get_var(cu); - r2 = get_var(cu); + r1 = get_var(cu, J_INT); + r2 = get_var(cu, J_INT); bb = get_basic_block(cu, 0, 3); @@ -80,8 +80,8 @@ void test_variable_range_spans_two_basic_blocks(void) struct insn *insn[4]; cu = compilation_unit_alloc(&method); - r1 = get_var(cu); - r2 = get_var(cu); + r1 = get_var(cu, J_INT); + r2 = get_var(cu, J_INT); bb1 = get_basic_block(cu, 0, 2); bb2 = get_basic_block(cu, 2, 4); diff --git a/test/jit/load-store-bc-test.c b/test/jit/load-store-bc-test.c index b1ec9d1..84addae 100644 --- a/test/jit/load-store-bc-test.c +++ b/test/jit/load-store-bc-test.c @@ -511,7 +511,7 @@ static void __assert_convert_store(unsigned char *code, bb = alloc_simple_bb(code, code_size); - temporary = get_var(bb->b_parent); + temporary = get_var(bb->b_parent, J_INT); stack_push(bb->mimic_stack, temporary_expr(J_INT, NULL, temporary)); convert_to_ir(bb->b_parent); diff --git a/test/jit/object-bc-test.c b/test/jit/object-bc-test.c index b56ae91..4be71f9 100644 --- a/test/jit/object-bc-test.c +++ b/test/jit/object-bc-test.c @@ -343,7 +343,7 @@ static void assert_convert_array_store(enum vm_type expected_type, arrayref_expr = value_expr(J_REFERENCE, arrayref); index_expr = value_expr(J_INT, index); - temporary = get_var(bb->b_parent); + temporary = get_var(bb->b_parent, J_INT); expr = temporary_expr(expected_type, NULL, temporary); stack_push(bb->mimic_stack, arrayref_expr); diff --git a/test/jit/spill-reload-test.c b/test/jit/spill-reload-test.c index 04f4c90..bf0abba 100644 --- a/test/jit/spill-reload-test.c +++ b/test/jit/spill-reload-test.c @@ -58,8 +58,8 @@ void test_spill_insn_is_inserted_at_the_end_of_the_interval_if_necessary(void) struct insn *insn; cu = compilation_unit_alloc(&method); - r1 = get_var(cu); - r2 = get_var(cu); + r1 = get_var(cu, J_INT); + r2 = get_var(cu, J_INT); insn_array[0] = arithmetic_insn(INSN_ADD, r1, r1, r1); insn_array[1] = arithmetic_insn(INSN_ADD, r2, r2, r2); @@ -104,8 +104,8 @@ void test_reload_insn_is_inserted_at_the_beginning_of_the_interval_if_necessary( struct insn *insn; cu = compilation_unit_alloc(&method); - r1 = get_var(cu); - r2 = get_var(cu); + r1 = get_var(cu, J_INT); + r2 = get_var(cu, J_INT); insn_array[0] = arithmetic_insn(INSN_ADD, r1, r1, r1); insn_array[1] = arithmetic_insn(INSN_ADD, r2, r2, r2); @@ -151,7 +151,7 @@ void test_empty_interval_is_never_spilled(void) cu = compilation_unit_alloc(&method); bb = get_basic_block(cu, 0, 2); - r1 = get_var(cu); + r1 = get_var(cu, J_INT); r1->interval->need_spill = true; compute_insn_positions(cu); diff --git a/test/jit/typeconv-bc-test.c b/test/jit/typeconv-bc-test.c index 6243da9..f409f4d 100644 --- a/test/jit/typeconv-bc-test.c +++ b/test/jit/typeconv-bc-test.c @@ -25,7 +25,7 @@ static void assert_conversion_mimic_stack(unsigned char opc, struct basic_block *bb; bb = __alloc_simple_bb(&method); - temporary = get_var(bb->b_parent); + temporary = get_var(bb->b_parent, J_INT); expression = temporary_expr(from_type, NULL, temporary); stack_push(bb->mimic_stack, expression); convert_to_ir(bb->b_parent); -- 1.6.0.6 ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge _______________________________________________ Jatovm-devel mailing list Jatovm-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/jatovm-devel