8192825: PPC64: Missing null check in C1 inline cache check
Reviewed-by: goetz
This commit is contained in:
parent
d8284abf49
commit
1fd81dac32
@ -41,20 +41,25 @@
|
|||||||
|
|
||||||
void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) {
|
void C1_MacroAssembler::inline_cache_check(Register receiver, Register iCache) {
|
||||||
const Register temp_reg = R12_scratch2;
|
const Register temp_reg = R12_scratch2;
|
||||||
|
Label Lmiss;
|
||||||
|
|
||||||
verify_oop(receiver);
|
verify_oop(receiver);
|
||||||
|
MacroAssembler::null_check(receiver, oopDesc::klass_offset_in_bytes(), &Lmiss);
|
||||||
load_klass(temp_reg, receiver);
|
load_klass(temp_reg, receiver);
|
||||||
if (TrapBasedICMissChecks) {
|
|
||||||
|
if (TrapBasedICMissChecks && TrapBasedNullChecks) {
|
||||||
trap_ic_miss_check(temp_reg, iCache);
|
trap_ic_miss_check(temp_reg, iCache);
|
||||||
} else {
|
} else {
|
||||||
Label L;
|
Label Lok;
|
||||||
cmpd(CCR0, temp_reg, iCache);
|
cmpd(CCR0, temp_reg, iCache);
|
||||||
beq(CCR0, L);
|
beq(CCR0, Lok);
|
||||||
|
bind(Lmiss);
|
||||||
//load_const_optimized(temp_reg, SharedRuntime::get_ic_miss_stub(), R0);
|
//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);
|
calculate_address_from_global_toc(temp_reg, SharedRuntime::get_ic_miss_stub(), true, true, false);
|
||||||
mtctr(temp_reg);
|
mtctr(temp_reg);
|
||||||
bctr();
|
bctr();
|
||||||
align(32, 12);
|
align(32, 12);
|
||||||
bind(L);
|
bind(Lok);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user