hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
changeset 33589 7cbd1b2c139b
parent 33155 73bf16b22e89
child 33626 3c94db05e903
equal deleted inserted replaced
33580:c2d95df2c54e 33589:7cbd1b2c139b
  1665   Register dst = op->result_opr()->as_register();
  1665   Register dst = op->result_opr()->as_register();
  1666   ciKlass* k = op->klass();
  1666   ciKlass* k = op->klass();
  1667   Register Rtmp1 = noreg;
  1667   Register Rtmp1 = noreg;
  1668 
  1668 
  1669   // check if it needs to be profiled
  1669   // check if it needs to be profiled
  1670   ciMethodData* md;
  1670   ciMethodData* md = NULL;
  1671   ciProfileData* data;
  1671   ciProfileData* data = NULL;
  1672 
  1672 
  1673   if (op->should_profile()) {
  1673   if (op->should_profile()) {
  1674     ciMethod* method = op->profiled_method();
  1674     ciMethod* method = op->profiled_method();
  1675     assert(method != NULL, "Should have method");
  1675     assert(method != NULL, "Should have method");
  1676     int bci = op->profiled_bci();
  1676     int bci = op->profiled_bci();
  1825     Register Rtmp1 = op->tmp3()->as_register();
  1825     Register Rtmp1 = op->tmp3()->as_register();
  1826 
  1826 
  1827     CodeStub* stub = op->stub();
  1827     CodeStub* stub = op->stub();
  1828 
  1828 
  1829     // check if it needs to be profiled
  1829     // check if it needs to be profiled
  1830     ciMethodData* md;
  1830     ciMethodData* md = NULL;
  1831     ciProfileData* data;
  1831     ciProfileData* data = NULL;
  1832 
  1832 
  1833     if (op->should_profile()) {
  1833     if (op->should_profile()) {
  1834       ciMethod* method = op->profiled_method();
  1834       ciMethod* method = op->profiled_method();
  1835       assert(method != NULL, "Should have method");
  1835       assert(method != NULL, "Should have method");
  1836       int bci = op->profiled_bci();
  1836       int bci = op->profiled_bci();
  2003     case lir_cond_lessEqual:    acond = Assembler::lessEqual;    ncond = Assembler::greater;      break;
  2003     case lir_cond_lessEqual:    acond = Assembler::lessEqual;    ncond = Assembler::greater;      break;
  2004     case lir_cond_greaterEqual: acond = Assembler::greaterEqual; ncond = Assembler::less;         break;
  2004     case lir_cond_greaterEqual: acond = Assembler::greaterEqual; ncond = Assembler::less;         break;
  2005     case lir_cond_greater:      acond = Assembler::greater;      ncond = Assembler::lessEqual;    break;
  2005     case lir_cond_greater:      acond = Assembler::greater;      ncond = Assembler::lessEqual;    break;
  2006     case lir_cond_belowEqual:   acond = Assembler::belowEqual;   ncond = Assembler::above;        break;
  2006     case lir_cond_belowEqual:   acond = Assembler::belowEqual;   ncond = Assembler::above;        break;
  2007     case lir_cond_aboveEqual:   acond = Assembler::aboveEqual;   ncond = Assembler::below;        break;
  2007     case lir_cond_aboveEqual:   acond = Assembler::aboveEqual;   ncond = Assembler::below;        break;
  2008     default:                    ShouldNotReachHere();
  2008     default:                    acond = Assembler::equal;        ncond = Assembler::notEqual;
       
  2009                                 ShouldNotReachHere();
  2009   }
  2010   }
  2010 
  2011 
  2011   if (opr1->is_cpu_register()) {
  2012   if (opr1->is_cpu_register()) {
  2012     reg2reg(opr1, result);
  2013     reg2reg(opr1, result);
  2013   } else if (opr1->is_stack()) {
  2014   } else if (opr1->is_stack()) {
  3180   }
  3181   }
  3181 
  3182 
  3182   assert(default_type != NULL && default_type->is_array_klass() && default_type->is_loaded(), "must be true at this point");
  3183   assert(default_type != NULL && default_type->is_array_klass() && default_type->is_loaded(), "must be true at this point");
  3183 
  3184 
  3184   int elem_size = type2aelembytes(basic_type);
  3185   int elem_size = type2aelembytes(basic_type);
  3185   int shift_amount;
       
  3186   Address::ScaleFactor scale;
  3186   Address::ScaleFactor scale;
  3187 
  3187 
  3188   switch (elem_size) {
  3188   switch (elem_size) {
  3189     case 1 :
  3189     case 1 :
  3190       shift_amount = 0;
       
  3191       scale = Address::times_1;
  3190       scale = Address::times_1;
  3192       break;
  3191       break;
  3193     case 2 :
  3192     case 2 :
  3194       shift_amount = 1;
       
  3195       scale = Address::times_2;
  3193       scale = Address::times_2;
  3196       break;
  3194       break;
  3197     case 4 :
  3195     case 4 :
  3198       shift_amount = 2;
       
  3199       scale = Address::times_4;
  3196       scale = Address::times_4;
  3200       break;
  3197       break;
  3201     case 8 :
  3198     case 8 :
  3202       shift_amount = 3;
       
  3203       scale = Address::times_8;
  3199       scale = Address::times_8;
  3204       break;
  3200       break;
  3205     default:
  3201     default:
       
  3202       scale = Address::no_scale;
  3206       ShouldNotReachHere();
  3203       ShouldNotReachHere();
  3207   }
  3204   }
  3208 
  3205 
  3209   Address src_length_addr = Address(src, arrayOopDesc::length_offset_in_bytes());
  3206   Address src_length_addr = Address(src, arrayOopDesc::length_offset_in_bytes());
  3210   Address dst_length_addr = Address(dst, arrayOopDesc::length_offset_in_bytes());
  3207   Address dst_length_addr = Address(dst, arrayOopDesc::length_offset_in_bytes());