< prev index next >
src/hotspot/cpu/ppc/interp_masm_ppc_64.cpp
Print this page
rev 55858 : 8228649: [PPC64] SA reads wrong slots from interpreter frames
Summary: Make frame layout consistent between dbg and product build and implement offsets accordingly.
Reviewed-by: goetz, gromero
*** 766,785 ****
Register Rscratch1, Register Rscratch2) {
// Pop interpreter frame.
ld(Rscratch1, 0, R1_SP); // *SP
ld(Rsender_sp, _ijava_state_neg(sender_sp), Rscratch1); // top_frame_sp
ld(Rscratch2, 0, Rscratch1); // **SP
- #ifdef ASSERT
- {
- Label Lok;
- ld(R0, _ijava_state_neg(ijava_reserved), Rscratch1);
- cmpdi(CCR0, R0, 0x5afe);
- beq(CCR0, Lok);
- stop("frame corrupted (remove activation)", 0x5afe);
- bind(Lok);
- }
- #endif
if (return_pc!=noreg) {
ld(return_pc, _abi(lr), Rscratch1); // LR
}
// Merge top frames.
--- 766,775 ----
*** 2261,2278 ****
cmpdi(CCR0, R0, frame::abi_reg_args_size + frame::ijava_state_size);
bge(CCR0, Lok);
stop("frame too small (restore istate)", 0x5432);
bind(Lok);
}
- {
- Label Lok;
- ld(R0, _ijava_state_neg(ijava_reserved), scratch);
- cmpdi(CCR0, R0, 0x5afe);
- beq(CCR0, Lok);
- stop("frame corrupted (restore istate)", 0x5afe);
- bind(Lok);
- }
#endif
}
void InterpreterMacroAssembler::get_method_counters(Register method,
Register Rcounters,
--- 2251,2260 ----
< prev index next >