Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Merge to feature branch |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | dkf-notifier-poll |
Files: | files | file ages | folders |
SHA1: |
b322e79d3ff8b698186a3ac5e7639a5c |
User & Date: | dkf 2011-03-20 16:21:16 |
Context
2011-03-22
| ||
11:12 | Try to minimize the amount of work done inside the notifier thread. check-in: 792d0f741d user: dkf tags: dkf-notifier-poll | |
2011-03-20
| ||
16:21 | Merge to feature branch check-in: b322e79d3f user: dkf tags: dkf-notifier-poll | |
16:20 | Getting closer to working check-in: 8e2242b4d1 user: dkf tags: dkf-notifier-poll | |
11:40 | changelog entry check-in: 292737732e user: mig tags: trunk | |
Changes
Changes to ChangeLog.
1 2 3 4 5 6 7 | 2011-03-17 Donal K. Fellows <[email protected]> * generic/tclCompExpr.c (ParseExpr): Generate errorCode information on failure to parse expressions. 2011-03-17 Jan Nijtmans <[email protected]> | > > > > > > > | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 2011-03-20 Miguel Sofer <[email protected]> * generic/tclThreadAlloc.c: imported HAVE_FAST_TSD support from mig-alloc-reform. The feature has to be enabled by hand: no autoconf support has been added. It is not clear how universal a build using this will be: it also requires some loader support. 2011-03-17 Donal K. Fellows <[email protected]> * generic/tclCompExpr.c (ParseExpr): Generate errorCode information on failure to parse expressions. 2011-03-17 Jan Nijtmans <[email protected]> |
︙ | ︙ |
Changes to generic/tclThreadAlloc.c.
︙ | ︙ | |||
141 142 143 144 145 146 147 148 149 150 151 152 153 154 | */ static Tcl_Mutex *listLockPtr; static Tcl_Mutex *objLockPtr; static Cache sharedCache; static Cache *sharedPtr = &sharedCache; static Cache *firstCachePtr = &sharedCache; /* *---------------------------------------------------------------------- * * GetCache --- * * Gets per-thread memory cache, allocating it if necessary. | > > > > > > > > > > > > > > > > > > > > > > | 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | */ static Tcl_Mutex *listLockPtr; static Tcl_Mutex *objLockPtr; static Cache sharedCache; static Cache *sharedPtr = &sharedCache; static Cache *firstCachePtr = &sharedCache; #if defined(HAVE_FAST_TSD) static __thread Cache *tcachePtr; static __thread int allocInitialized = 0; # define GETCACHE(cachePtr) \ do { \ if (!allocInitialized) { \ allocInitialized = 1; \ tcachePtr = GetCache(); \ } \ (cachePtr) = tcachePtr; \ } while (0) #else # define GETCACHE(cachePtr) \ do { \ (cachePtr) = TclpGetAllocCache(); \ if ((cachePtr) == NULL) { \ (cachePtr) = GetCache(); \ } \ } while (0) #endif /* *---------------------------------------------------------------------- * * GetCache --- * * Gets per-thread memory cache, allocating it if necessary. |
︙ | ︙ | |||
304 305 306 307 308 309 310 | if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { /* Requested allocation exceeds memory */ return NULL; } } #endif | < | < < | 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 | if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { /* Requested allocation exceeds memory */ return NULL; } } #endif GETCACHE(cachePtr); /* * Increment the requested size to include room for the Block structure. * Call malloc() directly if the required amount is greater than the * largest block, otherwise pop the smallest block large enough, * allocating more blocks if necessary. */ |
︙ | ︙ | |||
374 375 376 377 378 379 380 | Block *blockPtr; int bucket; if (ptr == NULL) { return; } | < | < < | 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 | Block *blockPtr; int bucket; if (ptr == NULL) { return; } GETCACHE(cachePtr); /* * Get the block back from the user pointer and call system free directly * for large blocks. Otherwise, push the block back on the bucket and move * blocks to the shared cache if there are now too many free. */ |
︙ | ︙ | |||
449 450 451 452 453 454 455 | if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { /* Requested allocation exceeds memory */ return NULL; } } #endif | < | < < | 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 | if (((size_t) reqSize) > max - sizeof(Block) - RCHECK) { /* Requested allocation exceeds memory */ return NULL; } } #endif GETCACHE(cachePtr); /* * If the block is not a system block and fits in place, simply return the * existing pointer. Otherwise, if the block is a system block and the new * size would also require a system block, call realloc() directly. */ |
︙ | ︙ | |||
526 527 528 529 530 531 532 | * *---------------------------------------------------------------------- */ Tcl_Obj * TclThreadAllocObj(void) { | | | < < | 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 | * *---------------------------------------------------------------------- */ Tcl_Obj * TclThreadAllocObj(void) { register Cache *cachePtr; register Tcl_Obj *objPtr; GETCACHE(cachePtr); /* * Get this thread's obj list structure and move or allocate new objs if * necessary. */ if (cachePtr->numObjects == 0) { |
︙ | ︙ | |||
600 601 602 603 604 605 606 | *---------------------------------------------------------------------- */ void TclThreadFreeObj( Tcl_Obj *objPtr) { | | | < < | 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 | *---------------------------------------------------------------------- */ void TclThreadFreeObj( Tcl_Obj *objPtr) { Cache *cachePtr; GETCACHE(cachePtr); /* * Get this thread's list and push on the free Tcl_Obj. */ objPtr->internalRep.otherValuePtr = cachePtr->firstObjPtr; cachePtr->firstObjPtr = objPtr; |
︙ | ︙ |