--- a/src/hotspot/cpu/ppc/c1_MacroAssembler_ppc.cpp Fri Dec 01 11:26:22 2017 -0500
+++ b/src/hotspot/cpu/ppc/c1_MacroAssembler_ppc.cpp Fri Dec 01 14:19:16 2017 -0500
@@ -41,20 +41,25 @@
void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) {
const Register temp_reg = R12_scratch2;
+ Label Lmiss;
+
verify_oop(receiver);
+ MacroAssembler::null_check(receiver, oopDesc::klass_offset_in_bytes(), &Lmiss);
load_klass(temp_reg, receiver);
- if (TrapBasedICMissChecks) {
+
+ if (TrapBasedICMissChecks && TrapBasedNullChecks) {
trap_ic_miss_check(temp_reg, iCache);
} else {
- Label L;
+ Label Lok;
cmpd(CCR0, temp_reg, iCache);
- beq(CCR0, L);
+ beq(CCR0, Lok);
+ bind(Lmiss);
//load_const_optimized(temp_reg, SharedRuntime::get_ic_miss_stub(), R0);
calculate_address_from_global_toc(temp_reg, SharedRuntime::get_ic_miss_stub(), true, true, false);
mtctr(temp_reg);
bctr();
align(32, 12);
- bind(L);
+ bind(Lok);
}
}
--- a/src/hotspot/cpu/s390/macroAssembler_s390.cpp Fri Dec 01 11:26:22 2017 -0500
+++ b/src/hotspot/cpu/s390/macroAssembler_s390.cpp Fri Dec 01 14:19:16 2017 -0500
@@ -5041,6 +5041,7 @@
z_bru(VectorDone);
bind(VectorBreak);
+ add2reg(Rsrc, -min_vcnt*2); // Fix Rsrc. Rsrc was already updated, but Rdst and Rix are not.
z_sll(Rix, log_min_vcnt); // # chars processed so far in VectorLoop, excl. current iteration.
z_sr(Z_R0, Rix); // correct # chars processed in total.
--- a/src/hotspot/share/runtime/objectMonitor.cpp Fri Dec 01 11:26:22 2017 -0500
+++ b/src/hotspot/share/runtime/objectMonitor.cpp Fri Dec 01 14:19:16 2017 -0500
@@ -2152,6 +2152,7 @@
_next = NULL;
_prev = NULL;
_notified = 0;
+ _notifier_tid = 0;
TState = TS_RUN;
_thread = thread;
_event = thread->_ParkEvent;