Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b88796d4c16ff46ca816b569ddd51ed9c76b8390
https://github.com/WebKit/WebKit/commit/b88796d4c16ff46ca816b569ddd51ed9c76b8390
Author: Yusuke Suzuki <[email protected]>
Date: 2026-05-11 (Mon, 11 May 2026)
Changed paths:
M Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp
M Source/bmalloc/libpas/src/libpas/jit_heap_config.c
M
Source/bmalloc/libpas/src/libpas/pas_create_basic_heap_page_caches_with_reserved_memory.c
M Source/bmalloc/libpas/src/libpas/pas_large_free_heap_helpers.c
M
Source/bmalloc/libpas/src/libpas/pas_large_heap_physical_page_sharing_cache.c
M
Source/bmalloc/libpas/src/libpas/pas_large_heap_physical_page_sharing_cache.h
M Source/bmalloc/libpas/src/libpas/pas_large_sharing_pool.c
M Source/bmalloc/libpas/src/libpas/pas_large_sharing_pool.h
M Source/bmalloc/libpas/src/test/LargeSharingPoolTests.cpp
Log Message:
-----------
[JSC] StructureAlignedMemoryAllocator does not need to do commit on Windows
https://bugs.webkit.org/show_bug.cgi?id=314272
rdar://176416356
Reviewed by Marcus Plutowski.
As Windows libpas uses symmetric commit / decommit, we do not need
explicit commit for StructureAlignedMemoryAllocator. However, we need to
change libpas around reserved memory region.
When reserved memory is registered in libpas heap, we allocate it from
cache and register it to large-sharing-pool. But at that time, we
are registering them as committed memory. We skip calling commit for
them and this is not compatible to Windows, and that's a reason why
Windows cannot use Gigacage in practice.
This patch adds provider_commit_mode which tells whether the provider
allocated page is committed or decommitted. Later this changes splat
call mode splat_boot_free_committed v.s. splat_boot_free_decommitted.
And this controls committed / decommitted state in large-sharing-pool.
* Source/JavaScriptCore/heap/StructureAlignedMemoryAllocator.cpp:
(JSC::StructureMemoryManager::StructureMemoryManager):
(JSC::StructureMemoryManager::tryMallocStructureBlock):
* Source/bmalloc/libpas/src/libpas/jit_heap_config.c:
*
Source/bmalloc/libpas/src/libpas/pas_create_basic_heap_page_caches_with_reserved_memory.c:
(pas_create_basic_heap_page_caches_with_reserved_memory):
* Source/bmalloc/libpas/src/libpas/pas_large_free_heap_helpers.c:
(large_utility_aligned_allocator):
* Source/bmalloc/libpas/src/libpas/pas_large_heap_physical_page_sharing_cache.c:
(large_aligned_allocator):
(pas_large_heap_physical_page_sharing_cache_construct):
* Source/bmalloc/libpas/src/libpas/pas_large_heap_physical_page_sharing_cache.h:
* Source/bmalloc/libpas/src/libpas/pas_large_sharing_pool.c:
(splat_command_get_string):
(splat_command_get_free_mode):
(try_splat_impl):
(pas_large_sharing_pool_boot_free):
* Source/bmalloc/libpas/src/libpas/pas_large_sharing_pool.h:
* Source/bmalloc/libpas/src/test/LargeSharingPoolTests.cpp:
(std::testGoodCoalesceEpochUpdate):
Canonical link: https://commits.webkit.org/313052@main
To unsubscribe from these emails, change your notification settings at
https://github.com/WebKit/WebKit/settings/notifications