src/cpu/sparc/vm/copy_sparc.hpp

changeset 548
ba764ed4b6f2
parent 435
a61af66fc99e
child 631
d1605aabd0a1
     1.1 --- a/src/cpu/sparc/vm/copy_sparc.hpp	Fri Apr 11 09:56:35 2008 -0400
     1.2 +++ b/src/cpu/sparc/vm/copy_sparc.hpp	Sun Apr 13 17:43:42 2008 -0400
     1.3 @@ -137,24 +137,20 @@
     1.4  }
     1.5  
     1.6  static void pd_fill_to_words(HeapWord* tohw, size_t count, juint value) {
     1.7 -#if 0
     1.8 -  if (HeapWordsPerLong == 1 ||
     1.9 -      (HeapWordsPerLong == 2 &&
    1.10 -       mask_bits((uintptr_t)tohw, right_n_bits(LogBytesPerLong)) == 0 &&
    1.11 -       ((count & 1) ? false : count >>= 1))) {
    1.12 -    julong* to = (julong*)tohw;
    1.13 -    julong  v  = ((julong)value << 32) | value;
    1.14 -    while (count-- > 0) {
    1.15 -      *to++ = v;
    1.16 -    }
    1.17 -  } else {
    1.18 -#endif
    1.19 -    juint* to = (juint*)tohw;
    1.20 -    count *= HeapWordSize / BytesPerInt;
    1.21 -    while (count-- > 0) {
    1.22 -      *to++ = value;
    1.23 -    }
    1.24 -    //  }
    1.25 +#ifdef _LP64
    1.26 +  guarantee(mask_bits((uintptr_t)tohw, right_n_bits(LogBytesPerLong)) == 0,
    1.27 +         "unaligned fill words");
    1.28 +  julong* to = (julong*)tohw;
    1.29 +  julong  v  = ((julong)value << 32) | value;
    1.30 +  while (count-- > 0) {
    1.31 +    *to++ = v;
    1.32 +  }
    1.33 +#else // _LP64
    1.34 +  juint* to = (juint*)tohw;
    1.35 +  while (count-- > 0) {
    1.36 +    *to++ = value;
    1.37 +  }
    1.38 +#endif // _LP64
    1.39  }
    1.40  
    1.41  static void pd_fill_to_aligned_words(HeapWord* tohw, size_t count, juint value) {

mercurial