hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
changeset 16611 6807a703dd6b
parent 14626 0cf4eccf130f
child 18507 61bfc8995bb3
equal deleted inserted replaced
16381:806d87cb0cc7 16611:6807a703dd6b
  3753   } else {
  3753   } else {
  3754     ShouldNotReachHere();
  3754     ShouldNotReachHere();
  3755   }
  3755   }
  3756 }
  3756 }
  3757 
  3757 
       
  3758 #ifdef ASSERT
       
  3759 // emit run-time assertion
       
  3760 void LIR_Assembler::emit_assert(LIR_OpAssert* op) {
       
  3761   assert(op->code() == lir_assert, "must be");
       
  3762 
       
  3763   if (op->in_opr1()->is_valid()) {
       
  3764     assert(op->in_opr2()->is_valid(), "both operands must be valid");
       
  3765     comp_op(op->condition(), op->in_opr1(), op->in_opr2(), op);
       
  3766   } else {
       
  3767     assert(op->in_opr2()->is_illegal(), "both operands must be illegal");
       
  3768     assert(op->condition() == lir_cond_always, "no other conditions allowed");
       
  3769   }
       
  3770 
       
  3771   Label ok;
       
  3772   if (op->condition() != lir_cond_always) {
       
  3773     Assembler::Condition acond = Assembler::zero;
       
  3774     switch (op->condition()) {
       
  3775       case lir_cond_equal:        acond = Assembler::equal;       break;
       
  3776       case lir_cond_notEqual:     acond = Assembler::notEqual;    break;
       
  3777       case lir_cond_less:         acond = Assembler::less;        break;
       
  3778       case lir_cond_lessEqual:    acond = Assembler::lessEqual;   break;
       
  3779       case lir_cond_greaterEqual: acond = Assembler::greaterEqual;break;
       
  3780       case lir_cond_greater:      acond = Assembler::greater;     break;
       
  3781       case lir_cond_belowEqual:   acond = Assembler::belowEqual;  break;
       
  3782       case lir_cond_aboveEqual:   acond = Assembler::aboveEqual;  break;
       
  3783       default:                    ShouldNotReachHere();
       
  3784     }
       
  3785     __ jcc(acond, ok);
       
  3786   }
       
  3787   if (op->halt()) {
       
  3788     const char* str = __ code_string(op->msg());
       
  3789     __ stop(str);
       
  3790   } else {
       
  3791     breakpoint();
       
  3792   }
       
  3793   __ bind(ok);
       
  3794 }
       
  3795 #endif
  3758 
  3796 
  3759 void LIR_Assembler::membar() {
  3797 void LIR_Assembler::membar() {
  3760   // QQQ sparc TSO uses this,
  3798   // QQQ sparc TSO uses this,
  3761   __ membar( Assembler::Membar_mask_bits(Assembler::StoreLoad));
  3799   __ membar( Assembler::Membar_mask_bits(Assembler::StoreLoad));
  3762 }
  3800 }