< prev index next >
src/hotspot/cpu/sparc/c1_LIRAssembler_sparc.cpp
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 105,116 ****
((src->is_double_fpu() || dst->is_double_fpu()) && op1->move_kind() != lir_move_normal)) {
return false;
}
if (UseCompressedOops) {
! if (dst->is_address() && !dst->is_stack() && (dst->type() == T_OBJECT || dst->type() == T_ARRAY)) return false;
! if (src->is_address() && !src->is_stack() && (src->type() == T_OBJECT || src->type() == T_ARRAY)) return false;
}
if (UseCompressedClassPointers) {
if (src->is_address() && !src->is_stack() && src->type() == T_ADDRESS &&
src->as_address_ptr()->disp() == oopDesc::klass_offset_in_bytes()) return false;
--- 105,116 ----
((src->is_double_fpu() || dst->is_double_fpu()) && op1->move_kind() != lir_move_normal)) {
return false;
}
if (UseCompressedOops) {
! if (dst->is_address() && !dst->is_stack() && is_reference_type(dst->type())) return false;
! if (src->is_address() && !src->is_stack() && is_reference_type(src->type())) return false;
}
if (UseCompressedClassPointers) {
if (src->is_address() && !src->is_stack() && src->type() == T_ADDRESS &&
src->as_address_ptr()->disp() == oopDesc::klass_offset_in_bytes()) return false;
*** 726,736 ****
assert(!unaligned, "can't handle this");
// for offsets larger than a simm13 we setup the offset in O7
__ set(offset, O7);
store_offset = store(from_reg, base, O7, type, wide);
} else {
! if (type == T_ARRAY || type == T_OBJECT) {
__ verify_oop(from_reg->as_register());
}
store_offset = code_offset();
switch (type) {
case T_BOOLEAN: // fall through
--- 726,736 ----
assert(!unaligned, "can't handle this");
// for offsets larger than a simm13 we setup the offset in O7
__ set(offset, O7);
store_offset = store(from_reg, base, O7, type, wide);
} else {
! if (is_reference_type(type)) {
__ verify_oop(from_reg->as_register());
}
store_offset = code_offset();
switch (type) {
case T_BOOLEAN: // fall through
*** 787,797 ****
return store_offset;
}
int LIR_Assembler::store(LIR_Opr from_reg, Register base, Register disp, BasicType type, bool wide) {
! if (type == T_ARRAY || type == T_OBJECT) {
__ verify_oop(from_reg->as_register());
}
int store_offset = code_offset();
switch (type) {
case T_BOOLEAN: // fall through
--- 787,797 ----
return store_offset;
}
int LIR_Assembler::store(LIR_Opr from_reg, Register base, Register disp, BasicType type, bool wide) {
! if (is_reference_type(type)) {
__ verify_oop(from_reg->as_register());
}
int store_offset = code_offset();
switch (type) {
case T_BOOLEAN: // fall through
*** 887,897 ****
}
break;
}
default : ShouldNotReachHere();
}
! if (type == T_ARRAY || type == T_OBJECT) {
__ verify_oop(to_reg->as_register());
}
}
return load_offset;
}
--- 887,897 ----
}
break;
}
default : ShouldNotReachHere();
}
! if (is_reference_type(type)) {
__ verify_oop(to_reg->as_register());
}
}
return load_offset;
}
*** 922,932 ****
case T_LONG :
__ ldx(base, disp, to_reg->as_register_lo());
break;
default : ShouldNotReachHere();
}
! if (type == T_ARRAY || type == T_OBJECT) {
__ verify_oop(to_reg->as_register());
}
return load_offset;
}
--- 922,932 ----
case T_LONG :
__ ldx(base, disp, to_reg->as_register_lo());
break;
default : ShouldNotReachHere();
}
! if (is_reference_type(type)) {
__ verify_oop(to_reg->as_register());
}
return load_offset;
}
*** 1357,1367 ****
__ mov(from_reg->as_register(), to_reg->as_register());
}
} else {
ShouldNotReachHere();
}
! if (to_reg->type() == T_OBJECT || to_reg->type() == T_ARRAY) {
__ verify_oop(to_reg->as_register());
}
}
void LIR_Assembler::reg2mem(LIR_Opr from_reg, LIR_Opr dest, BasicType type,
--- 1357,1367 ----
__ mov(from_reg->as_register(), to_reg->as_register());
}
} else {
ShouldNotReachHere();
}
! if (is_reference_type(to_reg->type())) {
__ verify_oop(to_reg->as_register());
}
}
void LIR_Assembler::reg2mem(LIR_Opr from_reg, LIR_Opr dest, BasicType type,
*** 2293,2304 ****
op->tmp4()->as_register() == O1 &&
op->klass()->as_register() == G5, "must be");
__ signx(op->len()->as_register());
if (UseSlowPath ||
! (!UseFastNewObjectArray && (op->type() == T_OBJECT || op->type() == T_ARRAY)) ||
! (!UseFastNewTypeArray && (op->type() != T_OBJECT && op->type() != T_ARRAY))) {
__ br(Assembler::always, false, Assembler::pt, *op->stub()->entry());
__ delayed()->nop();
} else {
__ allocate_array(op->obj()->as_register(),
op->len()->as_register(),
--- 2293,2304 ----
op->tmp4()->as_register() == O1 &&
op->klass()->as_register() == G5, "must be");
__ signx(op->len()->as_register());
if (UseSlowPath ||
! (!UseFastNewObjectArray && is_reference_type(op->type())) ||
! (!UseFastNewTypeArray && !is_reference_type(op->type()))) {
__ br(Assembler::always, false, Assembler::pt, *op->stub()->entry());
__ delayed()->nop();
} else {
__ allocate_array(op->obj()->as_register(),
op->len()->as_register(),
< prev index next >