Show
Ignore:
Timestamp:
08/18/08 11:14:49 (5 months ago)
Author:
odole
Message:

merge with webkit revision 35814

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/BAL/OWBAL/Concretizations/Memory/WK/BCFastMallocWK.cpp

    r436 r440  
    18071807#ifdef WTF_CHANGES 
    18081808  template <class Finder, class Reader> 
    1809   void enumerateFreeObjects(Finder& finder, const Reader& reader
     1809  void enumerateFreeObjects(Finder& finder, const Reader& reader, TCMalloc_Central_FreeList* remoteCentralFreeList
    18101810  { 
    18111811    for (Span* span = &empty_; span && span != &empty_; span = (span->next ? reader(span->next) : 0)) 
     
    18131813 
    18141814    ASSERT(!nonempty_.objects); 
    1815     for (Span* span = reader(nonempty_.next); span && span != &nonempty_; span = (span->next ? reader(span->next) : 0)) { 
     1815    static const ptrdiff_t nonemptyOffset = reinterpret_cast<const char*>(&nonempty_) - reinterpret_cast<const char*>(this); 
     1816 
     1817    Span* remoteNonempty = reinterpret_cast<Span*>(reinterpret_cast<char*>(remoteCentralFreeList) + nonemptyOffset); 
     1818    Span* remoteSpan = nonempty_.next; 
     1819 
     1820    for (Span* span = reader(remoteSpan); span && remoteSpan != remoteNonempty; remoteSpan = span->next, span = (span->next ? reader(span->next) : 0)) { 
    18161821      for (void* nextObject = span->objects; nextObject; nextObject = *reader(reinterpret_cast<void**>(nextObject))) 
    18171822        finder.visit(nextObject); 
     
    35893594    } 
    35903595 
    3591     void findFreeObjects(TCMalloc_Central_FreeListPadded* centralFreeList, size_t numSizes
     3596    void findFreeObjects(TCMalloc_Central_FreeListPadded* centralFreeList, size_t numSizes, TCMalloc_Central_FreeListPadded* remoteCentralFreeList
    35923597    { 
    35933598        for (unsigned i = 0; i < numSizes; i++) 
    3594             centralFreeList[i].enumerateFreeObjects(*this, m_reader); 
     3599            centralFreeList[i].enumerateFreeObjects(*this, m_reader, remoteCentralFreeList + i); 
    35953600    } 
    35963601}; 
     
    37063711    FreeObjectFinder finder(memoryReader); 
    37073712    finder.findFreeObjects(threadHeaps); 
    3708     finder.findFreeObjects(centralCaches, kNumClasses); 
     3713    finder.findFreeObjects(centralCaches, kNumClasses, mzone->m_centralCaches); 
    37093714 
    37103715    TCMalloc_PageHeap::PageMap* pageMap = &pageHeap->pagemap_;