Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 06d5550e6d760d556d785bbdb21f3c2a49b8f68b
      
https://github.com/WebKit/WebKit/commit/06d5550e6d760d556d785bbdb21f3c2a49b8f68b
  Author: Mark Lam <[email protected]>
  Date:   2025-12-12 (Fri, 12 Dec 2025)

  Changed paths:
    M Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h
    M Source/WTF/wtf/CagedPtr.h
    M Source/WTF/wtf/Gigacage.h
    M Source/WTF/wtf/PlatformHave.h
    M Source/bmalloc/bmalloc/BPlatform.h
    M Source/bmalloc/bmalloc/Gigacage.h
    M Source/bmalloc/libpas/src/libpas/pas_platform.h

  Log Message:
  -----------
  Disable use of HAVE(36BIT_ADDRESS).
https://bugs.webkit.org/show_bug.cgi?id=304052
rdar://166369379

Reviewed by Keith Miller.

We cannot guarantee that the kernel will always map pages with 36-bit 
addresses.  As such, we
cannot use HAVE(36BIT_ADDRESS).  For now, we will simply disable the use of 
HAVE(36BIT_ADDRESS)
instead of removing the code completely.  We will completely remove the 
HAVE(36BIT_ADDRESS)
code after we have some baking time.

Also clean up or fix some uses of EFFECTIVE_ADDRESS_WIDTH that fall out of 
disabling
HAVE(36BIT_ADDRESS).  This includes:

1. Removed tagArrayPtr, untagArrayPtr, untagArrayPtrLength64, and 
removeArrayPtrTag functions
   from MacroAssemblerARM64E.h.  These functions are now unused.

   With that, we can remove the maxNumberOfAllowedPACBits constant which relies 
on
   OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH), which ultimately relies on 
HAVE(36BIT_ADDRESS).
   This constant was previously being used by removeArrayPtrTag.  The number of 
PAC bits is
   not ABI.  Hence, it is generally not ABI safe / stable to rely on this.  
Hence, I opted
   to just remove this code since they are unused anyway.

2. Removed some unused constants in CagePtr.h that rely on 
OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH).

3. Fix hasCapacityToUseLargeGigacage to not rely on 
OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH).
   OS_CONSTANT(EFFECTIVE_ADDRESS_WIDTH) may not be a good signal on whether we 
can afford
   to use a large Gigacage or not.  Instead, just set this value based on 
whether we're
   targetting an embedded platform, or not.

   Also set hasCapacityToUseLargeGigacage to false for CPU(ADDRESS32) just for 
consistency.
   Note: CPU(ADDRESS32) platforms do not actually enable Gigacage.

No new tests.  This is just a feature disablement.  The affected code will 
already be
covered by existing tests.

* Source/JavaScriptCore/assembler/MacroAssemblerARM64E.h:
(JSC::MacroAssemblerARM64E::tagArrayPtr): Deleted.
(JSC::MacroAssemblerARM64E::untagArrayPtr): Deleted.
(JSC::MacroAssemblerARM64E::untagArrayPtrLength64): Deleted.
(JSC::MacroAssemblerARM64E::removeArrayPtrTag): Deleted.
* Source/WTF/wtf/CagedPtr.h:
* Source/WTF/wtf/Gigacage.h:
* Source/WTF/wtf/PlatformHave.h:
* Source/bmalloc/bmalloc/BPlatform.h:
* Source/bmalloc/bmalloc/Gigacage.h:
* Source/bmalloc/libpas/src/libpas/pas_platform.h:

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



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

Reply via email to