Mercurial > hg > graal-jvmci-8
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()); |