--- a/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp Wed Dec 16 11:35:59 2015 +0000
+++ b/hotspot/src/cpu/aarch64/vm/assembler_aarch64.hpp Wed Dec 16 13:21:19 2015 +0000
@@ -135,15 +135,10 @@
// bytecode pointer
REGISTER_DECLARATION(Register, rbcp, r22);
// Dispatch table base
-REGISTER_DECLARATION(Register, rdispatch, r21);
+REGISTER_DECLARATION(Register, rdispatch, r21);
// Java stack pointer
REGISTER_DECLARATION(Register, esp, r20);
-// TODO : x86 uses rbp to save SP in method handle code
-// we may need to do the same with fp
-// JSR 292 fixed register usages:
-//REGISTER_DECLARATION(Register, r_mh_SP_save, r29);
-
#define assert_cond(ARG1) assert(ARG1, #ARG1)
namespace asm_util {
@@ -551,6 +546,7 @@
size = 0; break;
default:
ShouldNotReachHere();
+ size = 0; // unreachable
}
} else {
size = i->get(31, 31);
--- a/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Wed Dec 16 11:35:59 2015 +0000
+++ b/hotspot/src/cpu/aarch64/vm/c1_LIRAssembler_aarch64.cpp Wed Dec 16 13:21:19 2015 +0000
@@ -173,6 +173,7 @@
break;
default:
ShouldNotReachHere();
+ result = 0; // unreachable
}
return result;
}
@@ -720,6 +721,7 @@
break;
default:
ShouldNotReachHere();
+ insn = &Assembler::str; // unreachable
}
if (info) add_debug_info_for_null_check_here(info);
@@ -1110,6 +1112,7 @@
case lir_cond_greaterEqual: acond = (is_unordered ? Assembler::HS : Assembler::GE); break;
case lir_cond_greater: acond = (is_unordered ? Assembler::HI : Assembler::GT); break;
default: ShouldNotReachHere();
+ acond = Assembler::EQ; // unreachable
}
} else {
switch (op->cond()) {
@@ -1121,7 +1124,8 @@
case lir_cond_greater: acond = Assembler::GT; break;
case lir_cond_belowEqual: acond = Assembler::LS; break;
case lir_cond_aboveEqual: acond = Assembler::HS; break;
- default: ShouldNotReachHere();
+ default: ShouldNotReachHere();
+ acond = Assembler::EQ; // unreachable
}
}
__ br(acond,*(op->label()));
@@ -1313,7 +1317,9 @@
ciMethodData* md;
ciProfileData* data;
- if (op->should_profile()) {
+ const bool should_profile = op->should_profile();
+
+ if (should_profile) {
ciMethod* method = op->profiled_method();
assert(method != NULL, "Should have method");
int bci = op->profiled_bci();
@@ -1324,8 +1330,8 @@
assert(data->is_ReceiverTypeData(), "need ReceiverTypeData for type check");
}
Label profile_cast_success, profile_cast_failure;
- Label *success_target = op->should_profile() ? &profile_cast_success : success;
- Label *failure_target = op->should_profile() ? &profile_cast_failure : failure;
+ Label *success_target = should_profile ? &profile_cast_success : success;
+ Label *failure_target = should_profile ? &profile_cast_failure : failure;
if (obj == k_RInfo) {
k_RInfo = dst;
@@ -1341,7 +1347,7 @@
assert_different_registers(obj, k_RInfo, klass_RInfo);
- if (op->should_profile()) {
+ if (should_profile) {
Label not_null;
__ cbnz(obj, not_null);
// Object is null; update MDO and exit
@@ -1413,7 +1419,7 @@
// successful cast, fall through to profile or jump
}
}
- if (op->should_profile()) {
+ if (should_profile) {
Register mdo = klass_RInfo, recv = k_RInfo;
__ bind(profile_cast_success);
__ mov_metadata(mdo, md->constant_encoding());
@@ -1438,6 +1444,8 @@
void LIR_Assembler::emit_opTypeCheck(LIR_OpTypeCheck* op) {
+ const bool should_profile = op->should_profile();
+
LIR_Code code = op->code();
if (code == lir_store_check) {
Register value = op->object()->as_register();
@@ -1452,7 +1460,7 @@
ciMethodData* md;
ciProfileData* data;
- if (op->should_profile()) {
+ if (should_profile) {
ciMethod* method = op->profiled_method();
assert(method != NULL, "Should have method");
int bci = op->profiled_bci();
@@ -1463,10 +1471,10 @@
assert(data->is_ReceiverTypeData(), "need ReceiverTypeData for type check");
}
Label profile_cast_success, profile_cast_failure, done;
- Label *success_target = op->should_profile() ? &profile_cast_success : &done;
- Label *failure_target = op->should_profile() ? &profile_cast_failure : stub->entry();
-
- if (op->should_profile()) {
+ Label *success_target = should_profile ? &profile_cast_success : &done;
+ Label *failure_target = should_profile ? &profile_cast_failure : stub->entry();
+
+ if (should_profile) {
Label not_null;
__ cbnz(value, not_null);
// Object is null; update MDO and exit
@@ -1502,7 +1510,7 @@
__ cbzw(k_RInfo, *failure_target);
// fall through to the success case
- if (op->should_profile()) {
+ if (should_profile) {
Register mdo = klass_RInfo, recv = k_RInfo;
__ bind(profile_cast_success);
__ mov_metadata(mdo, md->constant_encoding());
@@ -1621,9 +1629,10 @@
case lir_cond_lessEqual: acond = Assembler::LE; ncond = Assembler::GT; break;
case lir_cond_greaterEqual: acond = Assembler::GE; ncond = Assembler::LT; break;
case lir_cond_greater: acond = Assembler::GT; ncond = Assembler::LE; break;
- case lir_cond_belowEqual: Unimplemented(); break;
- case lir_cond_aboveEqual: Unimplemented(); break;
+ case lir_cond_belowEqual:
+ case lir_cond_aboveEqual:
default: ShouldNotReachHere();
+ acond = Assembler::EQ; ncond = Assembler::NE; // unreachable
}
assert(result->is_single_cpu() || result->is_double_cpu(),
@@ -1724,6 +1733,7 @@
break;
default:
ShouldNotReachHere();
+ c = 0; // unreachable
break;
}
@@ -1926,6 +1936,7 @@
break;
default:
ShouldNotReachHere();
+ imm = 0; // unreachable
break;
}
@@ -3123,6 +3134,9 @@
break;
default:
ShouldNotReachHere();
+ lda = &MacroAssembler::ldaxr;
+ add = &MacroAssembler::add;
+ stl = &MacroAssembler::stlxr; // unreachable
}
switch (code) {
--- a/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Wed Dec 16 11:35:59 2015 +0000
+++ b/hotspot/src/cpu/aarch64/vm/c1_LIRGenerator_aarch64.cpp Wed Dec 16 13:21:19 2015 +0000
@@ -238,6 +238,7 @@
}
} else {
ShouldNotReachHere();
+ r = NULL; // unreachable
}
return r;
}
--- a/hotspot/src/cpu/aarch64/vm/interpreter_aarch64.cpp Wed Dec 16 11:35:59 2015 +0000
+++ b/hotspot/src/cpu/aarch64/vm/interpreter_aarch64.cpp Wed Dec 16 13:21:19 2015 +0000
@@ -230,6 +230,7 @@
break;
default:
ShouldNotReachHere();
+ fn = NULL; // unreachable
}
const int gpargs = 0, rtype = 3;
__ mov(rscratch1, fn);
--- a/hotspot/src/cpu/aarch64/vm/jniFastGetField_aarch64.cpp Wed Dec 16 11:35:59 2015 +0000
+++ b/hotspot/src/cpu/aarch64/vm/jniFastGetField_aarch64.cpp Wed Dec 16 13:21:19 2015 +0000
@@ -61,6 +61,7 @@
case T_FLOAT: name = "jni_fast_GetFloatField"; break;
case T_DOUBLE: name = "jni_fast_GetDoubleField"; break;
default: ShouldNotReachHere();
+ name = NULL; // unreachable
}
ResourceMark rm;
BufferBlob* blob = BufferBlob::create(name, BUFFER_SIZE);
@@ -125,6 +126,7 @@
case T_FLOAT: slow_case_addr = jni_GetFloatField_addr(); break;
case T_DOUBLE: slow_case_addr = jni_GetDoubleField_addr(); break;
default: ShouldNotReachHere();
+ slow_case_addr = NULL; // unreachable
}
{