- Source/bmalloc/ChangeLog +20 lines
Lines 1-3 Source/bmalloc/ChangeLog_sec1
1
2021-07-14  Michael Saboff  <msaboff@apple.com>
2
3
        [BMalloc] Lazily allocate physical pages
4
        https://bugs.webkit.org/show_bug.cgi?id=227957
5
6
        Reviewed by NOBODY (OOPS!).
7
8
        For Darwin platform we don't need to call madvise(..., MADV_FREE_REUSE) to commit physical
9
        memory to back an range of allocated virtual memory.  Instead the kernel will commit pages
10
        as they are touched.  This can reduce the footprint of a process when there is sparse access
11
        of allocated memory.
12
13
        Also fixed a minor bug where we allocate memory, but don't update the amount of physical memory
14
        associated with it.
15
16
        * bmalloc/Heap.cpp:
17
        (bmalloc::Heap::tryAllocateLargeChunk):
18
        * bmalloc/VMAllocate.h:
19
        (bmalloc::vmAllocatePhysicalPages):
20
1
2021-07-12  Filip Pizlo  <fpizlo@apple.com> and Yusuke Suzuki  <ysuzuki@apple.com>
21
2021-07-12  Filip Pizlo  <fpizlo@apple.com> and Yusuke Suzuki  <ysuzuki@apple.com>
2
22
3
        New malloc algorithm
23
        New malloc algorithm
- Source/bmalloc/bmalloc/Heap.cpp -1 / +1 lines
Lines 586-592 LargeRange Heap::tryAllocateLargeChunk(s Source/bmalloc/bmalloc/Heap.cpp_sec1
586
    PerProcess<Zone>::get()->addRange(Range(memory, size));
586
    PerProcess<Zone>::get()->addRange(Range(memory, size));
587
#endif
587
#endif
588
588
589
    return LargeRange(memory, size, 0, 0, memory);
589
    return LargeRange(memory, size, size, size, static_cast<char*>(memory) + size);
590
}
590
}
591
591
592
size_t Heap::largeSize(UniqueLockHolder&, void* object)
592
size_t Heap::largeSize(UniqueLockHolder&, void* object)
- Source/bmalloc/bmalloc/VMAllocate.h -2 / +3 lines
Lines 213-222 inline void vmDeallocatePhysicalPages(vo Source/bmalloc/bmalloc/VMAllocate.h_sec1
213
213
214
inline void vmAllocatePhysicalPages(void* p, size_t vmSize)
214
inline void vmAllocatePhysicalPages(void* p, size_t vmSize)
215
{
215
{
216
    vmValidatePhysical(p, vmSize);
217
#if BOS(DARWIN)
216
#if BOS(DARWIN)
218
    SYSCALL(madvise(p, vmSize, MADV_FREE_REUSE));
217
    BUNUSED_PARAM(p);
218
    BUNUSED_PARAM(vmSize);
219
#else
219
#else
220
    vmValidatePhysical(p, vmSize);
220
    SYSCALL(madvise(p, vmSize, MADV_NORMAL));
221
    SYSCALL(madvise(p, vmSize, MADV_NORMAL));
221
#if BOS(LINUX)
222
#if BOS(LINUX)
222
    SYSCALL(madvise(p, vmSize, MADV_DODUMP));
223
    SYSCALL(madvise(p, vmSize, MADV_DODUMP));

Return to Bug 227957