2275 __ ldrw(rscratch1, dst_length_addr); |
2275 __ ldrw(rscratch1, dst_length_addr); |
2276 __ cmpw(tmp, rscratch1); |
2276 __ cmpw(tmp, rscratch1); |
2277 __ br(Assembler::HI, *stub->entry()); |
2277 __ br(Assembler::HI, *stub->entry()); |
2278 } |
2278 } |
2279 |
2279 |
2280 // FIXME: The logic in LIRGenerator::arraycopy_helper clears |
|
2281 // length_positive_check if the source of our length operand is an |
|
2282 // arraylength. However, that arraylength might be zero, and the |
|
2283 // stub that we're about to call contains an assertion that count != |
|
2284 // 0 . So we make this check purely in order not to trigger an |
|
2285 // assertion failure. |
|
2286 __ cbzw(length, *stub->continuation()); |
|
2287 |
|
2288 if (flags & LIR_OpArrayCopy::type_check) { |
2280 if (flags & LIR_OpArrayCopy::type_check) { |
2289 // We don't know the array types are compatible |
2281 // We don't know the array types are compatible |
2290 if (basic_type != T_OBJECT) { |
2282 if (basic_type != T_OBJECT) { |
2291 // Simple test for basic type arrays |
2283 // Simple test for basic type arrays |
2292 if (UseCompressedClassPointers) { |
2284 if (UseCompressedClassPointers) { |