diff options
| author | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-05-04 11:35:55 (GMT) |
|---|---|---|
| committer | jan.nijtmans <nijtmans@users.sourceforge.net> | 2017-05-04 11:35:55 (GMT) |
| commit | f9abf48ecf1f023447fcffb2ea01493818be568d (patch) | |
| tree | aa23eb13fad8a9338993374a7b32b979d92573d9 /generic/tclThreadAlloc.c | |
| parent | 9c4eb9d12191daaee0a919967abc8f21b3f4fd99 (diff) | |
| parent | 01c5c4ed35a709109c81b8583a1a32872297f1af (diff) | |
| download | tcl-f9abf48ecf1f023447fcffb2ea01493818be568d.zip tcl-f9abf48ecf1f023447fcffb2ea01493818be568d.tar.gz tcl-f9abf48ecf1f023447fcffb2ea01493818be568d.tar.bz2 | |
merge novem
Diffstat (limited to 'generic/tclThreadAlloc.c')
| -rw-r--r-- | generic/tclThreadAlloc.c | 45 |
1 files changed, 35 insertions, 10 deletions
diff --git a/generic/tclThreadAlloc.c b/generic/tclThreadAlloc.c index d02e470..db095b4 100644 --- a/generic/tclThreadAlloc.c +++ b/generic/tclThreadAlloc.c @@ -196,20 +196,11 @@ GetCache(void) if (listLockPtr == NULL) { Tcl_Mutex *initLockPtr; - unsigned int i; initLockPtr = Tcl_GetAllocMutex(); Tcl_MutexLock(initLockPtr); if (listLockPtr == NULL) { - listLockPtr = TclpNewAllocMutex(); - objLockPtr = TclpNewAllocMutex(); - for (i = 0; i < NBUCKETS; ++i) { - bucketInfo[i].blockSize = MINALLOC << i; - bucketInfo[i].maxBlocks = 1 << (NBUCKETS - 1 - i); - bucketInfo[i].numMove = i < NBUCKETS - 1 ? - 1 << (NBUCKETS - 2 - i) : 1; - bucketInfo[i].lockPtr = TclpNewAllocMutex(); - } + TclInitThreadAlloc(); } Tcl_MutexUnlock(initLockPtr); } @@ -1064,6 +1055,40 @@ GetBlocks( } return 1; } + +/* + *---------------------------------------------------------------------- + * + * TclInitThreadAlloc -- + * + * Initializes the allocator cache-maintenance structures. + * It is done early and protected during the TclInitSubsystems(). + * + * Results: + * None. + * + * Side effects: + * None. + * + *---------------------------------------------------------------------- + */ + +void +TclInitThreadAlloc(void) +{ + unsigned int i; + + listLockPtr = TclpNewAllocMutex(); + objLockPtr = TclpNewAllocMutex(); + for (i = 0; i < NBUCKETS; ++i) { + bucketInfo[i].blockSize = MINALLOC << i; + bucketInfo[i].maxBlocks = 1 << (NBUCKETS - 1 - i); + bucketInfo[i].numMove = i < NBUCKETS - 1 ? + 1 << (NBUCKETS - 2 - i) : 1; + bucketInfo[i].lockPtr = TclpNewAllocMutex(); + } + TclpInitAllocCache(); +} /* *---------------------------------------------------------------------- |
