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