< 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 >