SUGGESTED FIX
Tom Rodriguez suggested the following fix:
--- a/src/cpu/sparc/vm/stubGenerator_sparc.cpp
+++ b/src/cpu/sparc/vm/stubGenerator_sparc.cpp
@@ -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();
}
|
EVALUATION
From Vladimir Kozlov:
I think it is because heap addresses crossed sign bit
(0x5a000000 - 0xf6400000) so compare is failed:
Heap
garbage-first heap total 2358272K, used 1529973K [0x5a000000, 0xe9f00000, 0xf6400000)
We need to fix array_overlap_test().
From Tom Rodriguez:
Right, so it's a false positive. The greaterEquals should be greaterEqualsUnsigned.
|