src/share/vm/c1/c1_LinearScan.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
c1-coops Cdiff src/share/vm/c1/c1_LinearScan.cpp
src/share/vm/c1/c1_LinearScan.cpp
Print this page
*** 1254,1264 ****
// when an instruction is a call, a temp range is created for all these registers
int num_caller_save_registers = 0;
int caller_save_registers[LinearScan::nof_regs];
int i;
! for (i = 0; i < FrameMap::nof_caller_save_cpu_regs; i++) {
LIR_Opr opr = FrameMap::caller_save_cpu_reg_at(i);
assert(opr->is_valid() && opr->is_register(), "FrameMap should not return invalid operands");
assert(reg_numHi(opr) == -1, "missing addition of range for hi-register");
caller_save_registers[num_caller_save_registers++] = reg_num(opr);
}
--- 1254,1264 ----
// when an instruction is a call, a temp range is created for all these registers
int num_caller_save_registers = 0;
int caller_save_registers[LinearScan::nof_regs];
int i;
! for (i = 0; i < FrameMap::nof_caller_save_cpu_regs - FrameMap::cpu_reg_range_reduction(); i++) {
LIR_Opr opr = FrameMap::caller_save_cpu_reg_at(i);
assert(opr->is_valid() && opr->is_register(), "FrameMap should not return invalid operands");
assert(reg_numHi(opr) == -1, "missing addition of range for hi-register");
caller_save_registers[num_caller_save_registers++] = reg_num(opr);
}
*** 3538,3548 ****
}
}
// invalidate all caller save registers at calls
if (visitor.has_call()) {
! for (j = 0; j < FrameMap::nof_caller_save_cpu_regs; j++) {
state_put(input_state, reg_num(FrameMap::caller_save_cpu_reg_at(j)), NULL);
}
for (j = 0; j < FrameMap::nof_caller_save_fpu_regs; j++) {
state_put(input_state, reg_num(FrameMap::caller_save_fpu_reg_at(j)), NULL);
}
--- 3538,3548 ----
}
}
// invalidate all caller save registers at calls
if (visitor.has_call()) {
! for (j = 0; j < FrameMap::nof_caller_save_cpu_regs - FrameMap::cpu_reg_range_reduction(); j++) {
state_put(input_state, reg_num(FrameMap::caller_save_cpu_reg_at(j)), NULL);
}
for (j = 0; j < FrameMap::nof_caller_save_fpu_regs; j++) {
state_put(input_state, reg_num(FrameMap::caller_save_fpu_reg_at(j)), NULL);
}
*** 5577,5587 ****
} else if (type == T_FLOAT || type == T_DOUBLE) {
_first_reg = pd_first_fpu_reg;
_last_reg = pd_last_fpu_reg;
} else {
_first_reg = pd_first_cpu_reg;
! _last_reg = pd_last_cpu_reg;
}
assert(0 <= _first_reg && _first_reg < LinearScan::nof_regs, "out of range");
assert(0 <= _last_reg && _last_reg < LinearScan::nof_regs, "out of range");
}
--- 5577,5587 ----
} else if (type == T_FLOAT || type == T_DOUBLE) {
_first_reg = pd_first_fpu_reg;
_last_reg = pd_last_fpu_reg;
} else {
_first_reg = pd_first_cpu_reg;
! _last_reg = pd_last_cpu_reg - FrameMap::cpu_reg_range_reduction();
}
assert(0 <= _first_reg && _first_reg < LinearScan::nof_regs, "out of range");
assert(0 <= _last_reg && _last_reg < LinearScan::nof_regs, "out of range");
}
src/share/vm/c1/c1_LinearScan.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File