< prev index next >

src/hotspot/cpu/s390/c1_LIRAssembler_s390.cpp

Print this page
rev 57534 : 8236555: [s390] Fix VerifyOops
Reviewed-by:

*** 895,905 **** Register disp_reg = Z_R0; int disp_value = addr->disp(); bool needs_patching = (patch_code != lir_patch_none); if (addr->base()->type() == T_OBJECT) { ! __ verify_oop(src); } PatchingStub* patch = NULL; if (needs_patching) { patch = new PatchingStub(_masm, PatchingStub::access_field_id); --- 895,905 ---- Register disp_reg = Z_R0; int disp_value = addr->disp(); bool needs_patching = (patch_code != lir_patch_none); if (addr->base()->type() == T_OBJECT) { ! __ verify_oop(src, FILE_AND_LINE); } PatchingStub* patch = NULL; if (needs_patching) { patch = new PatchingStub(_masm, PatchingStub::access_field_id);
*** 970,980 **** __ z_llgf(dest->as_register(), disp_value, disp_reg, src); __ oop_decoder(dest->as_register(), dest->as_register(), true); } else { __ z_lg(dest->as_register(), disp_value, disp_reg, src); } ! __ verify_oop(dest->as_register()); break; } case T_FLOAT: if (short_disp) { __ z_le(dest->as_float_reg(), disp_value, disp_reg, src); --- 970,980 ---- __ z_llgf(dest->as_register(), disp_value, disp_reg, src); __ oop_decoder(dest->as_register(), dest->as_register(), true); } else { __ z_lg(dest->as_register(), disp_value, disp_reg, src); } ! __ verify_oop(dest->as_register(), FILE_AND_LINE); break; } case T_FLOAT: if (short_disp) { __ z_le(dest->as_float_reg(), disp_value, disp_reg, src);
*** 1004,1014 **** assert(dest->is_register(), "should not call otherwise"); if (dest->is_single_cpu()) { if (is_reference_type(type)) { __ mem2reg_opt(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()), true); ! __ verify_oop(dest->as_register()); } else if (type == T_METADATA || type == T_ADDRESS) { __ mem2reg_opt(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()), true); } else { __ mem2reg_opt(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()), false); } --- 1004,1014 ---- assert(dest->is_register(), "should not call otherwise"); if (dest->is_single_cpu()) { if (is_reference_type(type)) { __ mem2reg_opt(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()), true); ! __ verify_oop(dest->as_register(), FILE_AND_LINE); } else if (type == T_METADATA || type == T_ADDRESS) { __ mem2reg_opt(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()), true); } else { __ mem2reg_opt(dest->as_register(), frame_map()->address_for_slot(src->single_stack_ix()), false); }
*** 1031,1041 **** assert(dest->is_stack(), "should not call otherwise"); if (src->is_single_cpu()) { const Address dst = frame_map()->address_for_slot(dest->single_stack_ix()); if (is_reference_type(type)) { ! __ verify_oop(src->as_register()); __ reg2mem_opt(src->as_register(), dst, true); } else if (type == T_METADATA || type == T_ADDRESS) { __ reg2mem_opt(src->as_register(), dst, true); } else { __ reg2mem_opt(src->as_register(), dst, false); --- 1031,1041 ---- assert(dest->is_stack(), "should not call otherwise"); if (src->is_single_cpu()) { const Address dst = frame_map()->address_for_slot(dest->single_stack_ix()); if (is_reference_type(type)) { ! __ verify_oop(src->as_register(), FILE_AND_LINE); __ reg2mem_opt(src->as_register(), dst, true); } else if (type == T_METADATA || type == T_ADDRESS) { __ reg2mem_opt(src->as_register(), dst, true); } else { __ reg2mem_opt(src->as_register(), dst, false);
*** 1077,1087 **** } } else { ShouldNotReachHere(); } if (is_reference_type(to_reg->type())) { ! __ verify_oop(to_reg->as_register()); } } void LIR_Assembler::reg2mem(LIR_Opr from, LIR_Opr dest_opr, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack, --- 1077,1087 ---- } } else { ShouldNotReachHere(); } if (is_reference_type(to_reg->type())) { ! __ verify_oop(to_reg->as_register(), FILE_AND_LINE); } } void LIR_Assembler::reg2mem(LIR_Opr from, LIR_Opr dest_opr, BasicType type, LIR_PatchCode patch_code, CodeEmitInfo* info, bool pop_fpu_stack,
*** 1093,1103 **** Register disp_reg = Z_R0; int disp_value = addr->disp(); bool needs_patching = (patch_code != lir_patch_none); if (addr->base()->is_oop_register()) { ! __ verify_oop(dest); } PatchingStub* patch = NULL; if (needs_patching) { patch = new PatchingStub(_masm, PatchingStub::access_field_id); --- 1093,1103 ---- Register disp_reg = Z_R0; int disp_value = addr->disp(); bool needs_patching = (patch_code != lir_patch_none); if (addr->base()->is_oop_register()) { ! __ verify_oop(dest, FILE_AND_LINE); } PatchingStub* patch = NULL; if (needs_patching) { patch = new PatchingStub(_masm, PatchingStub::access_field_id);
*** 1128,1138 **** } assert(disp_reg != Z_R0 || Immediate::is_simm20(disp_value), "should have set this up"); if (is_reference_type(type)) { ! __ verify_oop(from->as_register()); } bool short_disp = Immediate::is_uimm12(disp_value); // Remember the offset of the store. The patching_epilog must be done --- 1128,1138 ---- } assert(disp_reg != Z_R0 || Immediate::is_simm20(disp_value), "should have set this up"); if (is_reference_type(type)) { ! __ verify_oop(from->as_register(), FILE_AND_LINE); } bool short_disp = Immediate::is_uimm12(disp_value); // Remember the offset of the store. The patching_epilog must be done
*** 2410,2420 **** op->header_size(), op->object_size(), op->klass()->as_register(), *op->stub()->entry()); __ bind(*op->stub()->continuation()); ! __ verify_oop(op->obj()->as_register()); } void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) { Register len = op->len()->as_register(); __ move_reg_if_needed(len, T_LONG, len, T_INT); // sign extend --- 2410,2420 ---- op->header_size(), op->object_size(), op->klass()->as_register(), *op->stub()->entry()); __ bind(*op->stub()->continuation()); ! __ verify_oop(op->obj()->as_register(), FILE_AND_LINE); } void LIR_Assembler::emit_alloc_array(LIR_OpAllocArray* op) { Register len = op->len()->as_register(); __ move_reg_if_needed(len, T_LONG, len, T_INT); // sign extend
*** 2546,2556 **** } else { klass2reg_with_patching(k_RInfo, op->info_for_patch()); } assert(obj != k_RInfo, "must be different"); ! __ verify_oop(obj); // Get object class. // Not a safepoint as obj null check happens earlier. if (op->fast_check()) { if (UseCompressedClassPointers) { --- 2546,2556 ---- } else { klass2reg_with_patching(k_RInfo, op->info_for_patch()); } assert(obj != k_RInfo, "must be different"); ! __ verify_oop(obj, FILE_AND_LINE); // Get object class. // Not a safepoint as obj null check happens earlier. if (op->fast_check()) { if (UseCompressedClassPointers) {
*** 3007,3017 **** bool do_update = !TypeEntries::is_type_unknown(current_klass) && !exact_klass_set; assert(do_null || do_update, "why are we here?"); assert(!TypeEntries::was_null_seen(current_klass) || do_update, "why are we here?"); ! __ verify_oop(obj); if (do_null || tmp1 != obj DEBUG_ONLY(|| true)) { __ z_ltgr(tmp1, obj); } if (do_null) { --- 3007,3017 ---- bool do_update = !TypeEntries::is_type_unknown(current_klass) && !exact_klass_set; assert(do_null || do_update, "why are we here?"); assert(!TypeEntries::was_null_seen(current_klass) || do_update, "why are we here?"); ! __ verify_oop(obj, FILE_AND_LINE); if (do_null || tmp1 != obj DEBUG_ONLY(|| true)) { __ z_ltgr(tmp1, obj); } if (do_null) {
< prev index next >