< prev index next >

src/hotspot/cpu/x86/x86.ad

Print this page




2005 #ifndef PRODUCT
2006   void MachBreakpointNode::format(PhaseRegAlloc*, outputStream* st) const {
2007     st->print("# breakpoint");
2008   }
2009 #endif
2010 
2011   void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc* ra_) const {
2012     MacroAssembler _masm(&cbuf);
2013     __ int3();
2014   }
2015 
2016   uint MachBreakpointNode::size(PhaseRegAlloc* ra_) const {
2017     return MachNode::size(ra_);
2018   }
2019 
2020 %}
2021 
2022 encode %{
2023 
2024   enc_class call_epilog %{

2025     if (VerifyStackAtCalls) {
2026       // Check that stack depth is unchanged: find majik cookie on stack
2027       int framesize = ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP, -3*VMRegImpl::slots_per_word));
2028       MacroAssembler _masm(&cbuf);
2029       Label L;
2030       __ cmpptr(Address(rsp, framesize), (int32_t)0xbadb100d);
2031       __ jccb(Assembler::equal, L);
2032       // Die if stack mismatch
2033       __ int3();
2034       __ bind(L);
2035     }

2036   %}
2037 
2038 %}
2039 
2040 
2041 //----------OPERANDS-----------------------------------------------------------
2042 // Operand definitions must precede instruction definitions for correct parsing
2043 // in the ADLC because operands constitute user defined types which are used in
2044 // instruction definitions.
2045 
2046 operand vecZ() %{
2047   constraint(ALLOC_IN_RC(vectorz_reg));
2048   match(VecZ);
2049 
2050   format %{ %}
2051   interface(REG_INTER);
2052 %}
2053 
2054 operand legVecZ() %{
2055   constraint(ALLOC_IN_RC(vectorz_reg_vl));




2005 #ifndef PRODUCT
2006   void MachBreakpointNode::format(PhaseRegAlloc*, outputStream* st) const {
2007     st->print("# breakpoint");
2008   }
2009 #endif
2010 
2011   void MachBreakpointNode::emit(CodeBuffer &cbuf, PhaseRegAlloc* ra_) const {
2012     MacroAssembler _masm(&cbuf);
2013     __ int3();
2014   }
2015 
2016   uint MachBreakpointNode::size(PhaseRegAlloc* ra_) const {
2017     return MachNode::size(ra_);
2018   }
2019 
2020 %}
2021 
2022 encode %{
2023 
2024   enc_class call_epilog %{
2025     MacroAssembler _masm(&cbuf);
2026     if (VerifyStackAtCalls) {
2027       // Check that stack depth is unchanged: find majik cookie on stack
2028       int framesize = ra_->reg2offset_unchecked(OptoReg::add(ra_->_matcher._old_SP, -3*VMRegImpl::slots_per_word));

2029       Label L;
2030       __ cmpptr(Address(rsp, framesize), (int32_t)0xbadb100d);
2031       __ jccb(Assembler::equal, L);
2032       // Die if stack mismatch
2033       __ int3();
2034       __ bind(L);
2035     }
2036     __ oopmap_metadata(-1);
2037   %}
2038 
2039 %}
2040 
2041 
2042 //----------OPERANDS-----------------------------------------------------------
2043 // Operand definitions must precede instruction definitions for correct parsing
2044 // in the ADLC because operands constitute user defined types which are used in
2045 // instruction definitions.
2046 
2047 operand vecZ() %{
2048   constraint(ALLOC_IN_RC(vectorz_reg));
2049   match(VecZ);
2050 
2051   format %{ %}
2052   interface(REG_INTER);
2053 %}
2054 
2055 operand legVecZ() %{
2056   constraint(ALLOC_IN_RC(vectorz_reg_vl));


< prev index next >