< prev index next >

src/hotspot/cpu/ppc/c1_LIRAssembler_ppc.cpp

Print this page
rev 56376 : 8231448: s390 and ppc - replace JVM type comparisons to T_OBJECT and T_ARRAY with call to is_reference_type

*** 1235,1245 **** __ mr_if_needed(to_reg->as_register(), from_reg->as_register()); } } else { ShouldNotReachHere(); } ! if (to_reg->type() == T_OBJECT || to_reg->type() == T_ARRAY) { __ verify_oop(to_reg->as_register()); } } --- 1235,1245 ---- __ mr_if_needed(to_reg->as_register(), from_reg->as_register()); } } else { ShouldNotReachHere(); } ! if (is_reference_type(to_reg->type())) { __ verify_oop(to_reg->as_register()); } }
*** 1251,1261 **** Register src = addr->base()->as_pointer_register(); Register disp_reg = noreg; int disp_value = addr->disp(); bool needs_patching = (patch_code != lir_patch_none); ! bool compress_oop = (type == T_ARRAY || type == T_OBJECT) && UseCompressedOops && !wide && CompressedOops::mode() != CompressedOops::UnscaledNarrowOop; bool load_disp = addr->index()->is_illegal() && !Assembler::is_simm16(disp_value); bool use_R29 = compress_oop && load_disp; // Avoid register conflict, also do null check before killing R29. // Null check for large offsets in LIRGenerator::do_StoreField. bool needs_explicit_null_check = !ImplicitNullChecks || use_R29; --- 1251,1261 ---- Register src = addr->base()->as_pointer_register(); Register disp_reg = noreg; int disp_value = addr->disp(); bool needs_patching = (patch_code != lir_patch_none); ! bool compress_oop = (is_reference_type(type)) && UseCompressedOops && !wide && CompressedOops::mode() != CompressedOops::UnscaledNarrowOop; bool load_disp = addr->index()->is_illegal() && !Assembler::is_simm16(disp_value); bool use_R29 = compress_oop && load_disp; // Avoid register conflict, also do null check before killing R29. // Null check for large offsets in LIRGenerator::do_StoreField. bool needs_explicit_null_check = !ImplicitNullChecks || use_R29;
*** 1471,1481 **** ShouldNotReachHere(); break; } } else { assert(opr1->type() != T_ADDRESS && opr2->type() != T_ADDRESS, "currently unsupported"); ! if (opr1->type() == T_OBJECT || opr1->type() == T_ARRAY) { // There are only equal/notequal comparisons on objects. assert(condition == lir_cond_equal || condition == lir_cond_notEqual, "oops"); __ cmpd(BOOL_RESULT, opr1->as_register(), opr2->as_register()); } else { if (unsigned_comp) { --- 1471,1481 ---- ShouldNotReachHere(); break; } } else { assert(opr1->type() != T_ADDRESS && opr2->type() != T_ADDRESS, "currently unsupported"); ! if (is_reference_type(opr1->type())) { // There are only equal/notequal comparisons on objects. assert(condition == lir_cond_equal || condition == lir_cond_notEqual, "oops"); __ cmpd(BOOL_RESULT, opr1->as_register(), opr2->as_register()); } else { if (unsigned_comp) {
*** 2313,2324 **** void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) { LP64_ONLY( __ extsw(op->len()->as_register(), op->len()->as_register()); ) if (UseSlowPath || ! (!UseFastNewObjectArray && (op->type() == T_OBJECT || op->type() == T_ARRAY)) || ! (!UseFastNewTypeArray && (op->type() != T_OBJECT && op->type() != T_ARRAY))) { __ b(*op->stub()->entry()); } else { __ allocate_array(op->obj()->as_register(), op->len()->as_register(), op->tmp1()->as_register(), --- 2313,2324 ---- void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) { LP64_ONLY( __ extsw(op->len()->as_register(), op->len()->as_register()); ) if (UseSlowPath || ! (!UseFastNewObjectArray && (is_reference_type(op->type()))) || ! (!UseFastNewTypeArray && (!is_reference_type(op->type())))) { __ b(*op->stub()->entry()); } else { __ allocate_array(op->obj()->as_register(), op->len()->as_register(), op->tmp1()->as_register(),
< prev index next >