comparison src/cpu/sparc/vm/c1_LIRAssembler_sparc.cpp @ 23974:f13e777eb255

Merge with jdk8u111-b14
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Wed, 16 Nov 2016 12:32:54 -0800
parents 561a3f3a9b99 a3ede966ecfe
children
comparison
equal deleted inserted replaced
23792:3953f8820df8 23974:f13e777eb255
2163 2163
2164 if (flags & LIR_OpArrayCopy::dst_null_check) { 2164 if (flags & LIR_OpArrayCopy::dst_null_check) {
2165 __ tst(dst); 2165 __ tst(dst);
2166 __ brx(Assembler::equal, false, Assembler::pn, *stub->entry()); 2166 __ brx(Assembler::equal, false, Assembler::pn, *stub->entry());
2167 __ delayed()->nop(); 2167 __ delayed()->nop();
2168 }
2169
2170 // If the compiler was not able to prove that exact type of the source or the destination
2171 // of the arraycopy is an array type, check at runtime if the source or the destination is
2172 // an instance type.
2173 if (flags & LIR_OpArrayCopy::type_check) {
2174 if (!(flags & LIR_OpArrayCopy::LIR_OpArrayCopy::dst_objarray)) {
2175 __ load_klass(dst, tmp);
2176 __ lduw(tmp, in_bytes(Klass::layout_helper_offset()), tmp2);
2177 __ cmp(tmp2, Klass::_lh_neutral_value);
2178 __ br(Assembler::greaterEqual, false, Assembler::pn, *stub->entry());
2179 __ delayed()->nop();
2180 }
2181
2182 if (!(flags & LIR_OpArrayCopy::LIR_OpArrayCopy::src_objarray)) {
2183 __ load_klass(src, tmp);
2184 __ lduw(tmp, in_bytes(Klass::layout_helper_offset()), tmp2);
2185 __ cmp(tmp2, Klass::_lh_neutral_value);
2186 __ br(Assembler::greaterEqual, false, Assembler::pn, *stub->entry());
2187 __ delayed()->nop();
2188 }
2168 } 2189 }
2169 2190
2170 if (flags & LIR_OpArrayCopy::src_pos_positive_check) { 2191 if (flags & LIR_OpArrayCopy::src_pos_positive_check) {
2171 // test src_pos register 2192 // test src_pos register
2172 __ cmp_zero_and_br(Assembler::less, src_pos, *stub->entry()); 2193 __ cmp_zero_and_br(Assembler::less, src_pos, *stub->entry());