6962569: assembler_sparc.cpp:1969: assert(false) failed: error
Summary: array_overlap_test() fails when the address range crosses the MSB boundary. Thanks to Tom and Vladimir for their help on this one.
Reviewed-by: kvn, never, iveresov
--- a/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp Thu Jul 01 21:40:45 2010 -0700
+++ b/hotspot/src/cpu/sparc/vm/stubGenerator_sparc.cpp Mon Jun 28 14:13:18 2010 -0400
@@ -1007,9 +1007,9 @@
__ brx(Assembler::lessEqualUnsigned, false, Assembler::pt, (*NOLp));
__ delayed()->cmp(to_from, byte_count);
if (NOLp == NULL)
- __ brx(Assembler::greaterEqual, false, Assembler::pt, no_overlap_target);
+ __ brx(Assembler::greaterEqualUnsigned, false, Assembler::pt, no_overlap_target);
else
- __ brx(Assembler::greaterEqual, false, Assembler::pt, (*NOLp));
+ __ brx(Assembler::greaterEqualUnsigned, false, Assembler::pt, (*NOLp));
__ delayed()->nop();
}