Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 2c7b7e22dca55e025a5acce98a3f978869ef1294
      
https://github.com/WebKit/WebKit/commit/2c7b7e22dca55e025a5acce98a3f978869ef1294
  Author: Marcus Plutowski <[email protected]>
  Date:   2026-04-15 (Wed, 15 Apr 2026)

  Changed paths:
    M Source/bmalloc/CMakeLists.txt
    M Source/bmalloc/bmalloc.xcodeproj/project.pbxproj
    M Source/bmalloc/libpas/libpas.xcodeproj/project.pbxproj
    M Source/bmalloc/libpas/src/libpas/bmalloc_heap_config.h
    M Source/bmalloc/libpas/src/libpas/hotbit_heap_config.h
    M Source/bmalloc/libpas/src/libpas/iso_heap_config.h
    M Source/bmalloc/libpas/src/libpas/iso_test_heap_config.h
    M Source/bmalloc/libpas/src/libpas/jit_heap.c
    M Source/bmalloc/libpas/src/libpas/jit_heap_config.h
    M Source/bmalloc/libpas/src/libpas/minalign32_heap_config.h
    M Source/bmalloc/libpas/src/libpas/pagesize64k_heap_config.h
    M Source/bmalloc/libpas/src/libpas/pas_enumerate_large_heaps.c
    M Source/bmalloc/libpas/src/libpas/pas_heap.c
    M Source/bmalloc/libpas/src/libpas/pas_heap_config.h
    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_large_heap.h
    M Source/bmalloc/libpas/src/libpas/pas_large_map.c
    M Source/bmalloc/libpas/src/libpas/pas_large_map.h
    A Source/bmalloc/libpas/src/libpas/pas_large_map_variant.h
    M Source/bmalloc/libpas/src/libpas/pas_report_crash_pgm_report.h
    M Source/bmalloc/libpas/src/libpas/pas_root.c
    M Source/bmalloc/libpas/src/libpas/pas_root.h
    M Source/bmalloc/libpas/src/libpas/pas_status_reporter.c
    M Source/bmalloc/libpas/src/libpas/pas_try_allocate_intrinsic.h
    M Source/bmalloc/libpas/src/libpas/thingy_heap_config.h

  Log Message:
  -----------
  [libpas] De-singletonize the large-map
https://bugs.webkit.org/show_bug.cgi?id=311960
rdar://174512866

Reviewed by Yusuke Suzuki.

Previously, libpas used singletons for various datastructures
associated with the large-map, the
In particular, this patch bundles all of the following structures into a new
pas_large_map bundle-type, and creates two instances -- one corresponding to
pas_default_large_map_variant, and one to pas_sequestered_large_map_variant.
```
pas_large_map_hashtable pas_large_map_hashtable_instance;
pas_large_map_hashtable_in_flux_stash 
pas_large_map_hashtable_instance_in_flux_stash;

pas_small_large_map_hashtable pas_small_large_map_hashtable_instance;
pas_small_large_map_hashtable_in_flux_stash 
pas_small_large_map_hashtable_instance_in_flux_stash;

pas_tiny_large_map_hashtable pas_tiny_large_map_hashtable_instance;
pas_tiny_large_map_hashtable_in_flux_stash 
pas_tiny_large_map_hashtable_instance_in_flux_stash;
pas_tiny_large_map_second_level_hashtable_in_flux_stash 
pas_tiny_large_map_second_level_hashtable_in_flux_stash_instance;
```
Each large-map must specify which of the variants it will use, while
pas_large_heap_try_deallocate iterates through each of the variants in order to
find a match for the pointer being freed.

Most heaps will continue to use the pas_default_large_map_variant, but the JIT
heap will use the pas_sequestered_large_map_variant in preparation for
incorporating a sequestered allocation system into libpas.

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



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to