diff options
author | Jack Jansen <jack.jansen@cwi.nl> | 1997-02-03 15:06:45 (GMT) |
---|---|---|
committer | Jack Jansen <jack.jansen@cwi.nl> | 1997-02-03 15:06:45 (GMT) |
commit | 3c2871e1dfbc6b0869beb8df4e5531f9da401242 (patch) | |
tree | 73f67959bc31b8694083fe0c4c4377650af19328 /Mac/mwerks | |
parent | af310c1d008885a7412fbcae9ba3c58092dd04b4 (diff) | |
download | cpython-3c2871e1dfbc6b0869beb8df4e5531f9da401242.zip cpython-3c2871e1dfbc6b0869beb8df4e5531f9da401242.tar.gz cpython-3c2871e1dfbc6b0869beb8df4e5531f9da401242.tar.bz2 |
The USE_CACHE_ALIGNING define now has a value: the number of *words*
in a cacheline.
Diffstat (limited to 'Mac/mwerks')
-rw-r--r-- | Mac/mwerks/malloc/malloc.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/Mac/mwerks/malloc/malloc.c b/Mac/mwerks/malloc/malloc.c index 7b6e9fa..fdf91d5 100644 --- a/Mac/mwerks/malloc/malloc.c +++ b/Mac/mwerks/malloc/malloc.c @@ -61,8 +61,6 @@ static char *rcsid = "$Id$"; #define VCHECK #endif /* USE_MALLOC_DEBUG */ -#define USE_CACHE_ALIGN /* Define for aligning everything on 16-byte boundaries */ - typedef unsigned char u_char; typedef unsigned long u_long; typedef unsigned int u_int; @@ -104,9 +102,9 @@ union overhead { #define ov_index ovu.ovu_index #define ov_rmagic ovu.ovu_rmagic #define ov_size ovu.ovu_size -#ifdef USE_CACHE_ALIGN +#ifdef USE_CACHE_ALIGNED struct cachealigner { - u_long ovalign_1, ovalign_2, ovalign_3, ovalign_4; + u_long ovalign[USE_CACHE_ALIGNED]; }; #endif /* USE_CACHE_ALIGN */ }; @@ -263,10 +261,19 @@ morecore(bucket) #ifdef DEBUG2 ASSERT(nblks*sz == amt); #endif +#ifdef USE_CACHE_ALIGNED + op = (union overhead *)NewPtr(amt+4*USE_CACHE_ALIGNED); +#else op = (union overhead *)NewPtr(amt); +#endif /* no more room! */ if (op == NULL) return; +#ifdef USE_CACHE_ALIGNED +#define ALIGN_MASK (4*USE_CACHE_ALIGNED-1) + while ((long)op & ALIGN_MASK ) + op = (union overhead *)((long)op+1); +#endif /* USE_CACHE_ALIGNED */ /* * Add new memory allocated to that on * free list for this hash bucket. |