src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp
changeset 58356 feff88c68082
parent 55322 bc5baf205475
child 58679 9c3209ff7550
child 58925 9bbe560e8131
equal deleted inserted replaced
58355:de246fd65587 58356:feff88c68082
  1235       __ mr_if_needed(to_reg->as_register(), from_reg->as_register());
  1235       __ mr_if_needed(to_reg->as_register(), from_reg->as_register());
  1236     }
  1236     }
  1237   } else {
  1237   } else {
  1238     ShouldNotReachHere();
  1238     ShouldNotReachHere();
  1239   }
  1239   }
  1240   if (to_reg->type() == T_OBJECT || to_reg->type() == T_ARRAY) {
  1240   if (is_reference_type(to_reg->type())) {
  1241     __ verify_oop(to_reg->as_register());
  1241     __ verify_oop(to_reg->as_register());
  1242   }
  1242   }
  1243 }
  1243 }
  1244 
  1244 
  1245 
  1245 
  1251 
  1251 
  1252   Register src = addr->base()->as_pointer_register();
  1252   Register src = addr->base()->as_pointer_register();
  1253   Register disp_reg = noreg;
  1253   Register disp_reg = noreg;
  1254   int disp_value = addr->disp();
  1254   int disp_value = addr->disp();
  1255   bool needs_patching = (patch_code != lir_patch_none);
  1255   bool needs_patching = (patch_code != lir_patch_none);
  1256   bool compress_oop = (type == T_ARRAY || type == T_OBJECT) && UseCompressedOops && !wide &&
  1256   bool compress_oop = (is_reference_type(type)) && UseCompressedOops && !wide &&
  1257                       CompressedOops::mode() != CompressedOops::UnscaledNarrowOop;
  1257                       CompressedOops::mode() != CompressedOops::UnscaledNarrowOop;
  1258   bool load_disp = addr->index()->is_illegal() && !Assembler::is_simm16(disp_value);
  1258   bool load_disp = addr->index()->is_illegal() && !Assembler::is_simm16(disp_value);
  1259   bool use_R29 = compress_oop && load_disp; // Avoid register conflict, also do null check before killing R29.
  1259   bool use_R29 = compress_oop && load_disp; // Avoid register conflict, also do null check before killing R29.
  1260   // Null check for large offsets in LIRGenerator::do_StoreField.
  1260   // Null check for large offsets in LIRGenerator::do_StoreField.
  1261   bool needs_explicit_null_check = !ImplicitNullChecks || use_R29;
  1261   bool needs_explicit_null_check = !ImplicitNullChecks || use_R29;
  1471           ShouldNotReachHere();
  1471           ShouldNotReachHere();
  1472           break;
  1472           break;
  1473       }
  1473       }
  1474     } else {
  1474     } else {
  1475       assert(opr1->type() != T_ADDRESS && opr2->type() != T_ADDRESS, "currently unsupported");
  1475       assert(opr1->type() != T_ADDRESS && opr2->type() != T_ADDRESS, "currently unsupported");
  1476       if (opr1->type() == T_OBJECT || opr1->type() == T_ARRAY) {
  1476       if (is_reference_type(opr1->type())) {
  1477         // There are only equal/notequal comparisons on objects.
  1477         // There are only equal/notequal comparisons on objects.
  1478         assert(condition == lir_cond_equal || condition == lir_cond_notEqual, "oops");
  1478         assert(condition == lir_cond_equal || condition == lir_cond_notEqual, "oops");
  1479         __ cmpd(BOOL_RESULT, opr1->as_register(), opr2->as_register());
  1479         __ cmpd(BOOL_RESULT, opr1->as_register(), opr2->as_register());
  1480       } else {
  1480       } else {
  1481         if (unsigned_comp) {
  1481         if (unsigned_comp) {
  2313 
  2313 
  2314 
  2314 
  2315 void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) {
  2315 void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) {
  2316   LP64_ONLY( __ extsw(op->len()->as_register(), op->len()->as_register()); )
  2316   LP64_ONLY( __ extsw(op->len()->as_register(), op->len()->as_register()); )
  2317   if (UseSlowPath ||
  2317   if (UseSlowPath ||
  2318       (!UseFastNewObjectArray && (op->type() == T_OBJECT || op->type() == T_ARRAY)) ||
  2318       (!UseFastNewObjectArray && (is_reference_type(op->type()))) ||
  2319       (!UseFastNewTypeArray   && (op->type() != T_OBJECT && op->type() != T_ARRAY))) {
  2319       (!UseFastNewTypeArray   && (!is_reference_type(op->type())))) {
  2320     __ b(*op->stub()->entry());
  2320     __ b(*op->stub()->entry());
  2321   } else {
  2321   } else {
  2322     __ allocate_array(op->obj()->as_register(),
  2322     __ allocate_array(op->obj()->as_register(),
  2323                       op->len()->as_register(),
  2323                       op->len()->as_register(),
  2324                       op->tmp1()->as_register(),
  2324                       op->tmp1()->as_register(),