1.1 --- a/src/cpu/sparc/vm/copy_sparc.hpp Thu Aug 25 20:29:30 2011 -0700 1.2 +++ b/src/cpu/sparc/vm/copy_sparc.hpp Fri Aug 26 08:52:22 2011 -0700 1.3 @@ -156,9 +156,16 @@ 1.4 #endif // _LP64 1.5 } 1.6 1.7 +typedef void (*_zero_Fn)(HeapWord* to, size_t count); 1.8 + 1.9 static void pd_fill_to_aligned_words(HeapWord* tohw, size_t count, juint value) { 1.10 assert(MinObjAlignmentInBytes >= BytesPerLong, "need alternate implementation"); 1.11 1.12 + if (value == 0 && UseBlockZeroing && 1.13 + (count > (BlockZeroingLowLimit >> LogHeapWordSize))) { 1.14 + // Call it only when block zeroing is used 1.15 + ((_zero_Fn)StubRoutines::zero_aligned_words())(tohw, count); 1.16 + } else { 1.17 julong* to = (julong*)tohw; 1.18 julong v = ((julong)value << 32) | value; 1.19 // If count is odd, odd will be equal to 1 on 32-bit platform 1.20 @@ -176,6 +183,7 @@ 1.21 *((juint*)to) = value; 1.22 1.23 } 1.24 + } 1.25 } 1.26 1.27 static void pd_fill_to_bytes(void* to, size_t count, jubyte value) {