[webkit-changes] [WebKit/WebKit] bad2b1: Integrate PGM for large heap allocations

Brandon Stewart noreply at github.com
Wed Feb 15 22:19:19 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: bad2b1b9cb893c36c7d869820a8fae97ab36356e
      https://github.com/WebKit/WebKit/commit/bad2b1b9cb893c36c7d869820a8fae97ab36356e
  Author: Brandon Stewart <brandonstewart at apple.com>
  Date:   2023-02-15 (Wed, 15 Feb 2023)

  Changed paths:
    M Source/bmalloc/bmalloc.xcodeproj/project.pbxproj
    M Source/bmalloc/libpas/src/libpas/bmalloc_heap_config.h
    M Source/bmalloc/libpas/src/libpas/iso_heap_config.h
    M Source/bmalloc/libpas/src/libpas/pas_heap.c
    M Source/bmalloc/libpas/src/libpas/pas_heap_config_utils.h
    M Source/bmalloc/libpas/src/libpas/pas_large_heap.c
    M Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c
    M Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.h
    M Source/bmalloc/libpas/src/libpas/pas_try_allocate_common.h
    M Source/bmalloc/libpas/src/libpas/pas_try_reallocate.h
    M Source/bmalloc/libpas/src/test/PGMTests.cpp

  Log Message:
  -----------
  Integrate PGM for large heap allocations
https://bugs.webkit.org/show_bug.cgi?id=249371

Reviewed by Yusuke Suzuki.

This patch turns on PGM allocations for large heaps.
PGM will be enabled 1 in 1000 times upon process launch, and a PGM allocation
will be performed every 4,000 to 5,000 times.

This patch also adds re-allocation support to PGM. PGM allocations can be re-allocated
to a non pgm allocation and vice versa.

Based on benchmarks there was no noticable memory or performance overhead observed when enabling
this feature.

* Source/bmalloc/libpas/libpas.xcodeproj/project.pbxproj:
* Source/bmalloc/libpas/src/libpas/bmalloc_heap_config.h:
* Source/bmalloc/libpas/src/libpas/iso_heap_config.h:
* Source/bmalloc/libpas/src/libpas/pas_heap.c:
(pas_heap_create):
* Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.c:
(pas_probabilistic_guard_malloc_allocate):
(pas_probabilistic_guard_malloc_return_as_large_map_entry):
(pas_probabilistic_guard_malloc_should_call_pgm):
(pas_probabilistic_guard_malloc_initialize_pgm):
* Source/bmalloc/libpas/src/libpas/pas_probabilistic_guard_malloc_allocator.h:
* Source/bmalloc/libpas/src/libpas/pas_try_allocate_common.h:
(pas_try_allocate_common_impl_slow):
* Source/bmalloc/libpas/src/libpas/pas_try_reallocate.h:
(pas_try_reallocate):
* Source/bmalloc/libpas/src/test/PGMTests.cpp:
(std::testPGMRealloc):
(addPGMTests):

Canonical link: https://commits.webkit.org/260353@main




More information about the webkit-changes mailing list