equal
deleted
inserted
replaced
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(), |