Changeset 30111 in vbox for trunk/src/VBox/Runtime/common/alloc/memcache.cpp
- Timestamp:
- Jun 9, 2010 12:14:59 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 62505
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/common/alloc/memcache.cpp
r28800 r30111 308 308 309 309 /* Make it the hint. */ 310 ASMAtomicWritePtr( (void * volatile *)&pThis->pPageHint, pPage);310 ASMAtomicWritePtr(&pThis->pPageHint, pPage); 311 311 312 312 /* Link the page. */ 313 313 PRTMEMCACHEPAGE pPrevPage = pThis->pPageHead; 314 314 if (!pPrevPage) 315 ASMAtomicWritePtr( (void * volatile *)&pThis->pPageHead, pPage);315 ASMAtomicWritePtr(&pThis->pPageHead, pPage); 316 316 else 317 317 { 318 318 while (pPrevPage->pNext) 319 319 pPrevPage = pPrevPage->pNext; 320 ASMAtomicWritePtr( (void * volatile *)&pPrevPage->pNext, pPage);320 ASMAtomicWritePtr(&pPrevPage->pNext, pPage); 321 321 } 322 322 … … 359 359 * Try grab a free object from the stack. 360 360 */ 361 PRTMEMCACHEFREEOBJ pObj = (PRTMEMCACHEFREEOBJ)ASMAtomicUoReadPtr((void * volatile *)&pThis->pFreeTop);361 PRTMEMCACHEFREEOBJ pObj = ASMAtomicUoReadPtrT(&pThis->pFreeTop, PRTMEMCACHEFREEOBJ); 362 362 if (pObj) 363 363 { … … 365 365 do 366 366 { 367 pNext = (PRTMEMCACHEFREEOBJ)ASMAtomicUoReadPtr((void * volatile *)&pObj->pNext);368 if (ASMAtomicCmpXchgPtr( (void * volatile *)&pThis->pFreeTop, pNext, pObj))367 pNext = ASMAtomicUoReadPtrT(&pObj->pNext, PRTMEMCACHEFREEOBJ); 368 if (ASMAtomicCmpXchgPtr(&pThis->pFreeTop, pNext, pObj)) 369 369 { 370 370 *ppvObj = pObj; 371 371 return VINF_SUCCESS; 372 372 } 373 pObj = (PRTMEMCACHEFREEOBJ)ASMAtomicUoReadPtr((void * volatile *)&pThis->pFreeTop);373 pObj = ASMAtomicUoReadPtrT(&pThis->pFreeTop, PRTMEMCACHEFREEOBJ); 374 374 } while (pObj); 375 375 } … … 400 400 * Grab a free object at the page level. 401 401 */ 402 PRTMEMCACHEPAGE pPage = (PRTMEMCACHEPAGE)ASMAtomicReadPtr((void * volatile *)&pThis->pPageHint);402 PRTMEMCACHEPAGE pPage = ASMAtomicReadPtrT(&pThis->pPageHint, PRTMEMCACHEPAGE); 403 403 int32_t iObj = pPage ? rtMemCacheGrabObj(pPage) : -1; 404 404 if (iObj < 0) … … 412 412 { 413 413 if (iObj > 0) 414 ASMAtomicWritePtr( (void * volatile *)&pThis->pPageHint, pPage);414 ASMAtomicWritePtr(&pThis->pPageHint, pPage); 415 415 break; 416 416 } … … 511 511 do 512 512 { 513 pNext = (PRTMEMCACHEFREEOBJ)ASMAtomicUoReadPtr((void * volatile *)&pThis->pFreeTop);513 pNext = ASMAtomicUoReadPtrT(&pThis->pFreeTop, PRTMEMCACHEFREEOBJ); 514 514 pObj->pNext = pNext; 515 } while (!ASMAtomicCmpXchgPtr( (void * volatile *)&pThis->pFreeTop, pObj, pNext));515 } while (!ASMAtomicCmpXchgPtr(&pThis->pFreeTop, pObj, pNext)); 516 516 } 517 517 else
Note:
See TracChangeset
for help on using the changeset viewer.