# HG changeset patch # User kvn # Date 1255557812 25200 # Node ID d40f03b57795cfea9806a0be254bc3634e6c94cd # Parent 23862fc517bb8fca17fd615d3d87f2c09fe0e892 6890984: Comparison of 2 arrays could cause VM crash Summary: Restore original null checks. Reviewed-by: never, cfang diff -r 23862fc517bb -r d40f03b57795 src/cpu/sparc/vm/sparc.ad --- a/src/cpu/sparc/vm/sparc.ad Wed Oct 14 11:42:59 2009 -0700 +++ b/src/cpu/sparc/vm/sparc.ad Wed Oct 14 15:03:32 2009 -0700 @@ -3016,7 +3016,7 @@ // return true if the same array __ cmp(ary1_reg, ary2_reg); - __ br(Assembler::equal, true, Assembler::pn, Ldone); + __ brx(Assembler::equal, true, Assembler::pn, Ldone); __ delayed()->add(G0, 1, result_reg); // equal __ br_null(ary1_reg, true, Assembler::pn, Ldone); diff -r 23862fc517bb -r d40f03b57795 src/cpu/x86/vm/assembler_x86.cpp --- a/src/cpu/x86/vm/assembler_x86.cpp Wed Oct 14 11:42:59 2009 -0700 +++ b/src/cpu/x86/vm/assembler_x86.cpp Wed Oct 14 15:03:32 2009 -0700 @@ -8634,8 +8634,10 @@ if (is_array_equ) { // Need additional checks for arrays_equals. - andptr(ary1, ary2); - jcc(Assembler::zero, FALSE_LABEL); // One pointer is NULL + testptr(ary1, ary1); + jcc(Assembler::zero, FALSE_LABEL); + testptr(ary2, ary2); + jcc(Assembler::zero, FALSE_LABEL); // Check the lengths movl(limit, Address(ary1, length_offset));