Ignore:
Timestamp:
Jan 28, 2011, 4:35:17 PM (15 years ago)
Author:
[email protected]
Message:

https://bugs.webkit.org/show_bug.cgi?id=53352
Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH().

Reviewed by Geoff Garen.

The FixedVMPoolAllocator currently uses a best fix policy -
switch to first fit, this is less prone to external fragmentation.

  • jit/ExecutableAllocatorFixedVMPool.cpp:

(JSC::AllocationTableSizeClass::AllocationTableSizeClass):
(JSC::AllocationTableSizeClass::blockSize):
(JSC::AllocationTableSizeClass::blockCount):
(JSC::AllocationTableSizeClass::blockAlignment):
(JSC::AllocationTableSizeClass::size):
(JSC::AllocationTableLeaf::AllocationTableLeaf):
(JSC::AllocationTableLeaf::~AllocationTableLeaf):
(JSC::AllocationTableLeaf::allocate):
(JSC::AllocationTableLeaf::free):
(JSC::AllocationTableLeaf::isEmpty):
(JSC::AllocationTableLeaf::isFull):
(JSC::AllocationTableLeaf::size):
(JSC::AllocationTableLeaf::classForSize):
(JSC::AllocationTableLeaf::dump):
(JSC::LazyAllocationTable::LazyAllocationTable):
(JSC::LazyAllocationTable::~LazyAllocationTable):
(JSC::LazyAllocationTable::allocate):
(JSC::LazyAllocationTable::free):
(JSC::LazyAllocationTable::isEmpty):
(JSC::LazyAllocationTable::isFull):
(JSC::LazyAllocationTable::size):
(JSC::LazyAllocationTable::dump):
(JSC::LazyAllocationTable::classForSize):
(JSC::AllocationTableDirectory::AllocationTableDirectory):
(JSC::AllocationTableDirectory::~AllocationTableDirectory):
(JSC::AllocationTableDirectory::allocate):
(JSC::AllocationTableDirectory::free):
(JSC::AllocationTableDirectory::isEmpty):
(JSC::AllocationTableDirectory::isFull):
(JSC::AllocationTableDirectory::size):
(JSC::AllocationTableDirectory::classForSize):
(JSC::AllocationTableDirectory::dump):
(JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
(JSC::FixedVMPoolAllocator::alloc):
(JSC::FixedVMPoolAllocator::free):
(JSC::FixedVMPoolAllocator::allocated):
(JSC::FixedVMPoolAllocator::isValid):
(JSC::FixedVMPoolAllocator::classForSize):
(JSC::FixedVMPoolAllocator::offsetToPointer):
(JSC::FixedVMPoolAllocator::pointerToOffset):
(JSC::ExecutableAllocator::committedByteCount):
(JSC::ExecutableAllocator::isValid):
(JSC::ExecutableAllocator::underMemoryPressure):
(JSC::ExecutablePool::systemAlloc):
(JSC::ExecutablePool::systemRelease):

  • wtf/PageReservation.h:

(WTF::PageReservation::PageReservation):
(WTF::PageReservation::commit):
(WTF::PageReservation::decommit):
(WTF::PageReservation::committed):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r77006 r77025  
     12011-01-28  Gavin Barraclough  <[email protected]>
     2
     3        Reviewed by Geoff Garen.
     4
     5        https://bugs.webkit.org/show_bug.cgi?id=53352
     6        Heavy external fragmentation in FixedVMPoolAllocator can lead to a CRASH().
     7
     8        The FixedVMPoolAllocator currently uses a best fix policy -
     9        switch to first fit, this is less prone to external fragmentation.
     10
     11        * jit/ExecutableAllocatorFixedVMPool.cpp:
     12        (JSC::AllocationTableSizeClass::AllocationTableSizeClass):
     13        (JSC::AllocationTableSizeClass::blockSize):
     14        (JSC::AllocationTableSizeClass::blockCount):
     15        (JSC::AllocationTableSizeClass::blockAlignment):
     16        (JSC::AllocationTableSizeClass::size):
     17        (JSC::AllocationTableLeaf::AllocationTableLeaf):
     18        (JSC::AllocationTableLeaf::~AllocationTableLeaf):
     19        (JSC::AllocationTableLeaf::allocate):
     20        (JSC::AllocationTableLeaf::free):
     21        (JSC::AllocationTableLeaf::isEmpty):
     22        (JSC::AllocationTableLeaf::isFull):
     23        (JSC::AllocationTableLeaf::size):
     24        (JSC::AllocationTableLeaf::classForSize):
     25        (JSC::AllocationTableLeaf::dump):
     26        (JSC::LazyAllocationTable::LazyAllocationTable):
     27        (JSC::LazyAllocationTable::~LazyAllocationTable):
     28        (JSC::LazyAllocationTable::allocate):
     29        (JSC::LazyAllocationTable::free):
     30        (JSC::LazyAllocationTable::isEmpty):
     31        (JSC::LazyAllocationTable::isFull):
     32        (JSC::LazyAllocationTable::size):
     33        (JSC::LazyAllocationTable::dump):
     34        (JSC::LazyAllocationTable::classForSize):
     35        (JSC::AllocationTableDirectory::AllocationTableDirectory):
     36        (JSC::AllocationTableDirectory::~AllocationTableDirectory):
     37        (JSC::AllocationTableDirectory::allocate):
     38        (JSC::AllocationTableDirectory::free):
     39        (JSC::AllocationTableDirectory::isEmpty):
     40        (JSC::AllocationTableDirectory::isFull):
     41        (JSC::AllocationTableDirectory::size):
     42        (JSC::AllocationTableDirectory::classForSize):
     43        (JSC::AllocationTableDirectory::dump):
     44        (JSC::FixedVMPoolAllocator::FixedVMPoolAllocator):
     45        (JSC::FixedVMPoolAllocator::alloc):
     46        (JSC::FixedVMPoolAllocator::free):
     47        (JSC::FixedVMPoolAllocator::allocated):
     48        (JSC::FixedVMPoolAllocator::isValid):
     49        (JSC::FixedVMPoolAllocator::classForSize):
     50        (JSC::FixedVMPoolAllocator::offsetToPointer):
     51        (JSC::FixedVMPoolAllocator::pointerToOffset):
     52        (JSC::ExecutableAllocator::committedByteCount):
     53        (JSC::ExecutableAllocator::isValid):
     54        (JSC::ExecutableAllocator::underMemoryPressure):
     55        (JSC::ExecutablePool::systemAlloc):
     56        (JSC::ExecutablePool::systemRelease):
     57        * wtf/PageReservation.h:
     58        (WTF::PageReservation::PageReservation):
     59        (WTF::PageReservation::commit):
     60        (WTF::PageReservation::decommit):
     61        (WTF::PageReservation::committed):
     62
    1632011-01-27  Oliver Hunt  <[email protected]>
    264
Note: See TracChangeset for help on using the changeset viewer.