version 1.1, 1999/12/03 07:39:10 |
version 1.2, 2000/12/01 09:26:12 |
|
|
p[3] = 0; |
p[3] = 0; |
p += 4; |
p += 4; |
for (; p < lim; p += 4) { |
for (; p < lim; p += 4) { |
|
PREFETCH_FOR_WRITE(p+64); |
p[0] = (word)(p-4); |
p[0] = (word)(p-4); |
p[1] = 0; |
p[1] = 0; |
p[2] = 0; |
CLEAR_DOUBLE(p+2); |
p[3] = 0; |
|
}; |
}; |
return((ptr_t)(p-4)); |
return((ptr_t)(p-4)); |
} |
} |
|
|
p[4] = (word)p; |
p[4] = (word)p; |
p += 8; |
p += 8; |
for (; p < lim; p += 8) { |
for (; p < lim; p += 8) { |
|
PREFETCH_FOR_WRITE(p+64); |
p[0] = (word)(p-4); |
p[0] = (word)(p-4); |
p[4] = (word)p; |
p[4] = (word)p; |
}; |
}; |
|
|
/* Mark all objects if appropriate. */ |
/* Mark all objects if appropriate. */ |
if (IS_UNCOLLECTABLE(kind)) GC_set_hdr_marks(HDR(h)); |
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 */ |
/* Handle small objects sizes more efficiently. For larger objects */ |
/* the difference is less significant. */ |
/* the difference is less significant. */ |
# ifndef SMALL_CONFIG |
# ifndef SMALL_CONFIG |