diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2011-07-26 15:36:22 +0400 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2011-07-26 15:36:22 +0400 |
commit | 29be14a4aa2f73bf89396e50e5f5322fa9264b00 (patch) | |
tree | 85fb9a7aa0e14ef35f73be40b00e0aedcb37cf96 /new_hblk.c | |
parent | e955362cfcef47fdc3ad2140f50ea4638fd86a4d (diff) | |
download | bdwgc-gc5_3.tar.gz |
gc5.3 tarball importgc5_3
Diffstat (limited to 'new_hblk.c')
-rw-r--r-- | new_hblk.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -103,10 +103,10 @@ ptr_t ofl; p[3] = 0; p += 4; for (; p < lim; p += 4) { + PREFETCH_FOR_WRITE(p+64); p[0] = (word)(p-4); p[1] = 0; - p[2] = 0; - p[3] = 0; + CLEAR_DOUBLE(p+2); }; return((ptr_t)(p-4)); } @@ -141,6 +141,7 @@ ptr_t ofl; p[4] = (word)p; p += 8; for (; p < lim; p += 8) { + PREFETCH_FOR_WRITE(p+64); p[0] = (word)(p-4); p[4] = (word)p; }; @@ -179,6 +180,10 @@ int kind; /* Mark all objects if appropriate. */ if (IS_UNCOLLECTABLE(kind)) GC_set_hdr_marks(HDR(h)); + PREFETCH_FOR_WRITE((char *)h); + PREFETCH_FOR_WRITE((char *)h + 128); + PREFETCH_FOR_WRITE((char *)h + 256); + PREFETCH_FOR_WRITE((char *)h + 378); /* Handle small objects sizes more efficiently. For larger objects */ /* the difference is less significant. */ # ifndef SMALL_CONFIG |