< prev index next >
src/hotspot/cpu/x86/x86_64.ad
Print this page
rev 51802 : [mq]: crash_C2_method.patch
*** 909,918 ****
--- 909,926 ----
// NOTE: We set the table base offset here because users might be
// emitted before MachConstantBaseNode.
Compile::ConstantTable& constant_table = C->constant_table();
constant_table.set_table_base_offset(constant_table.calculate_table_base_offset());
}
+
+ #ifndef PRODUCT
+ ciMethod *currMethod = C->method();
+ if (currMethod && currMethod->has_option("crashOnEntry")) {
+ // aaa instruction not valid in 64-bit mode, leads to crash
+ emit_opcode(cbuf, 0x37);
+ }
+ #endif
}
uint MachPrologNode::size(PhaseRegAlloc* ra_) const
{
return MachNode::size(ra_); // too many variables; just compute it
*** 967,976 ****
--- 975,992 ----
void MachEpilogNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const
{
Compile* C = ra_->C;
MacroAssembler _masm(&cbuf);
+ #ifndef PRODUCT
+ ciMethod *currMethod = C->method();
+ if (currMethod && currMethod->has_option("crashOnExit")) {
+ // aaa instruction not valid in 64-bit mode, leads to crash
+ emit_opcode(cbuf, 0x37);
+ }
+ #endif
+
if (generate_vzeroupper(C)) {
// Clear upper bits of YMM registers when current compiled code uses
// wide vectors to avoid AVX <-> SSE transition penalty during call.
__ vzeroupper();
}
< prev index next >