< prev index next >
src/share/vm/c1/c1_LinearScan.cpp
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2005, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 1102,1111 ****
--- 1102,1113 ----
if (op2->in_opr1() != op2->in_opr2() && op2->in_opr2() == opr) {
assert((op2->result_opr()->is_register() || op->code() == lir_cmp) && op2->in_opr1()->is_register(), "cannot mark second operand as stack if others are not in register");
return shouldHaveRegister;
}
}
+ default:
+ break;
}
} else {
// FPU stack float instruction
switch (op->code()) {
case lir_add:
*** 1118,1127 ****
--- 1120,1131 ----
if (op2->in_opr1() != op2->in_opr2() && op2->in_opr2() == opr) {
assert((op2->result_opr()->is_register() || op->code() == lir_cmp) && op2->in_opr1()->is_register(), "cannot mark second operand as stack if others are not in register");
return shouldHaveRegister;
}
}
+ default:
+ break;
}
}
// We want to sometimes use logical operations on pointers, in particular in GC barriers.
// Since 64bit logical operations do not current support operands on stack, we have to make sure
// T_OBJECT doesn't get spilled along with T_LONG.
*** 1140,1149 ****
--- 1144,1155 ----
if (op2->in_opr1() != op2->in_opr2() && op2->in_opr2() == opr) {
assert((op2->result_opr()->is_register() || op->code() == lir_cmp) && op2->in_opr1()->is_register(), "cannot mark second operand as stack if others are not in register");
return shouldHaveRegister;
}
}
+ default:
+ break;
}
}
#endif // X86 S390
// all other operands require a register
*** 1245,1254 ****
--- 1251,1262 ----
TRACE_LINEAR_SCAN(4, tty->print_cr("operation at op_id %d: added hint from interval %d to %d", cmove->id(), from->reg_num(), to->reg_num()));
}
}
break;
}
+ default:
+ break;
}
}
void LinearScan::build_intervals() {
*** 3025,3036 ****
assert(op->as_Op1() != NULL, "move must be LIR_Op1");
LIR_Op1* move = (LIR_Op1*)op;
LIR_Opr src = move->in_opr();
LIR_Opr dst = move->result_opr();
if (dst == src ||
! !dst->is_pointer() && !src->is_pointer() &&
! src->is_same_register(dst)) {
instructions->at_put(j, NULL);
has_dead = true;
}
}
}
--- 3033,3044 ----
assert(op->as_Op1() != NULL, "move must be LIR_Op1");
LIR_Op1* move = (LIR_Op1*)op;
LIR_Opr src = move->in_opr();
LIR_Opr dst = move->result_opr();
if (dst == src ||
! (!dst->is_pointer() && !src->is_pointer() &&
! src->is_same_register(dst))) {
instructions->at_put(j, NULL);
has_dead = true;
}
}
}
< prev index next >