src/cpu/sparc/vm/copy_sparc.hpp

changeset 3092
baf763f388e6
parent 2314
f95d63e2154a
child 3206
16f9fa2bf76c
     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) {

mercurial