Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: acb1c76129d479ba1b60f43ab9d4c446205dc957
      
https://github.com/WebKit/WebKit/commit/acb1c76129d479ba1b60f43ab9d4c446205dc957
  Author: Antti Koivisto <[email protected]>
  Date:   2025-11-03 (Mon, 03 Nov 2025)

  Changed paths:
    M Source/JavaScriptCore/b3/B3CheckSpecial.h
    M Source/JavaScriptCore/b3/B3Kind.h
    M Source/JavaScriptCore/b3/B3ValueKey.h
    M Source/JavaScriptCore/b3/air/AirArg.h
    M Source/JavaScriptCore/b3/air/AirCode.h
    M Source/JavaScriptCore/b3/air/AirTmp.h
    M Source/JavaScriptCore/bytecode/BytecodeIndex.h
    M Source/JavaScriptCore/bytecode/CallVariant.h
    M Source/JavaScriptCore/bytecode/CodeOrigin.h
    M Source/JavaScriptCore/bytecode/DFGExitProfile.h
    M Source/JavaScriptCore/bytecode/DirectEvalCodeCache.h
    M Source/JavaScriptCore/bytecode/LazyOperandValueProfile.h
    M Source/JavaScriptCore/bytecode/ObjectPropertyCondition.h
    M Source/JavaScriptCore/bytecode/PropertyCondition.h
    M Source/JavaScriptCore/dfg/DFGAbstractHeap.h
    M Source/JavaScriptCore/dfg/DFGDesiredGlobalProperty.h
    M Source/JavaScriptCore/dfg/DFGHeapLocation.h
    M Source/JavaScriptCore/dfg/DFGMinifiedID.h
    M Source/JavaScriptCore/dfg/DFGNodeFlowProjection.h
    M Source/JavaScriptCore/dfg/DFGPromotedHeapLocation.h
    M Source/JavaScriptCore/dfg/DFGPropertyTypeKey.h
    M Source/JavaScriptCore/dfg/DFGPureValue.h
    M Source/JavaScriptCore/ftl/FTLLocation.h
    M Source/JavaScriptCore/interpreter/CallFrame.h
    M Source/JavaScriptCore/jit/ICStats.h
    M Source/JavaScriptCore/jit/JITCompilationKey.h
    M Source/JavaScriptCore/jit/Reg.h
    M Source/JavaScriptCore/parser/SourceCodeKey.h
    M Source/JavaScriptCore/profiler/ProfilerOrigin.h
    M Source/JavaScriptCore/profiler/ProfilerOriginStack.h
    M Source/JavaScriptCore/runtime/CodeCache.h
    M Source/JavaScriptCore/runtime/ControlFlowProfiler.h
    M Source/JavaScriptCore/runtime/PrototypeKey.h
    M Source/JavaScriptCore/runtime/TypeProfiler.h
    M Source/JavaScriptCore/runtime/VarOffset.h
    M Source/WTF/wtf/GenericHashKey.h
    M Source/WTF/wtf/HashFunctions.h
    M Source/WebCore/platform/Cookie.h
    M Source/WebCore/platform/Site.h
    M Source/WebCore/platform/graphics/FontCache.cpp
    M Source/WebCore/platform/graphics/FontPlatformData.h
    M Source/WebCore/platform/graphics/WidthCache.h
    M Source/WebCore/rendering/CSSValueKey.h
    M Source/WebCore/rendering/TextAutoSizing.h
    M Source/WebKit/Shared/WebFoundTextRange.h
    M Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h

  Log Message:
  -----------
  Support setting safeToCompareToEmptyOrDeleted in MemberBasedHash
https://bugs.webkit.org/show_bug.cgi?id=301816
rdar://163877354

Reviewed by Darin Adler and Sam Weinig.

Allow Hash types with safeToCompareToEmptyOrDeleted = true to be replaced with 
MemberBasedHash too.

To signal that the comparison is safe the type itself can have optional

static constexpr bool safeToCompareToHashTableEmptyOrDeletedValue = true;

field which is then picked up by MemberBasedHash.

Use this to remove lots of boilerplate.
Also clean up a few additional cases with safeToCompareToEmptyOrDeleted = false.

* Source/JavaScriptCore/b3/B3CheckSpecial.h:
(JSC::B3::CheckSpecialKeyHash::hash): Deleted.
(JSC::B3::CheckSpecialKeyHash::equal): Deleted.
* Source/JavaScriptCore/b3/B3Kind.h:
(JSC::B3::KindHash::hash): Deleted.
(JSC::B3::KindHash::equal): Deleted.
* Source/JavaScriptCore/b3/B3ValueKey.h:
(JSC::B3::ValueKeyHash::hash): Deleted.
(JSC::B3::ValueKeyHash::equal): Deleted.
* Source/JavaScriptCore/b3/air/AirArg.h:
(JSC::B3::Air::ArgHash::hash): Deleted.
(JSC::B3::Air::ArgHash::equal): Deleted.
* Source/JavaScriptCore/b3/air/AirCode.h:
* Source/JavaScriptCore/b3/air/AirTmp.h:
(JSC::B3::Air::TmpHash::hash): Deleted.
(JSC::B3::Air::TmpHash::equal): Deleted.
* Source/JavaScriptCore/bytecode/BytecodeIndex.h:
(JSC::BytecodeIndexHash::hash): Deleted.
(JSC::BytecodeIndexHash::equal): Deleted.
* Source/JavaScriptCore/bytecode/CallVariant.h:
(JSC::CallVariantHash::hash): Deleted.
(JSC::CallVariantHash::equal): Deleted.
* Source/JavaScriptCore/bytecode/CodeOrigin.h:
(JSC::CodeOriginHash::hash): Deleted.
(JSC::CodeOriginHash::equal): Deleted.
* Source/JavaScriptCore/bytecode/DFGExitProfile.h:
(JSC::DFG::FrequentExitSiteHash::hash): Deleted.
(JSC::DFG::FrequentExitSiteHash::equal): Deleted.
* Source/JavaScriptCore/bytecode/DirectEvalCodeCache.h:
(JSC::DirectEvalCodeCache::CacheKey::Hash::hash): Deleted.
(JSC::DirectEvalCodeCache::CacheKey::Hash::equal): Deleted.
* Source/JavaScriptCore/bytecode/LazyOperandValueProfile.h:
(JSC::LazyOperandValueProfileKeyHash::hash): Deleted.
(JSC::LazyOperandValueProfileKeyHash::equal): Deleted.
* Source/JavaScriptCore/bytecode/ObjectPropertyCondition.h:
(JSC::ObjectPropertyConditionHash::hash): Deleted.
(JSC::ObjectPropertyConditionHash::equal): Deleted.
* Source/JavaScriptCore/bytecode/PropertyCondition.h:
(JSC::PropertyConditionHash::hash): Deleted.
(JSC::PropertyConditionHash::equal): Deleted.
* Source/JavaScriptCore/dfg/DFGAbstractHeap.h:
(JSC::DFG::AbstractHeapHash::hash): Deleted.
(JSC::DFG::AbstractHeapHash::equal): Deleted.
* Source/JavaScriptCore/dfg/DFGDesiredGlobalProperty.h:
(JSC::DFG::DesiredGlobalPropertyHash::hash): Deleted.
(JSC::DFG::DesiredGlobalPropertyHash::equal): Deleted.
* Source/JavaScriptCore/dfg/DFGHeapLocation.h:
(JSC::DFG::HeapLocationHash::hash): Deleted.
(JSC::DFG::HeapLocationHash::equal): Deleted.
* Source/JavaScriptCore/dfg/DFGMinifiedID.h:
(JSC::DFG::MinifiedIDHash::hash): Deleted.
(JSC::DFG::MinifiedIDHash::equal): Deleted.
* Source/JavaScriptCore/dfg/DFGNodeFlowProjection.h:
(JSC::DFG::NodeFlowProjectionHash::hash): Deleted.
(JSC::DFG::NodeFlowProjectionHash::equal): Deleted.
* Source/JavaScriptCore/dfg/DFGPromotedHeapLocation.h:
(JSC::DFG::PromotedLocationDescriptorHash::hash): Deleted.
(JSC::DFG::PromotedLocationDescriptorHash::equal): Deleted.
(JSC::DFG::PromotedHeapLocationHash::hash): Deleted.
(JSC::DFG::PromotedHeapLocationHash::equal): Deleted.
* Source/JavaScriptCore/dfg/DFGPropertyTypeKey.h:
(JSC::DFG::PropertyTypeKeyHash::hash): Deleted.
(JSC::DFG::PropertyTypeKeyHash::equal): Deleted.
* Source/JavaScriptCore/dfg/DFGPureValue.h:
(JSC::DFG::PureValueHash::hash): Deleted.
(JSC::DFG::PureValueHash::equal): Deleted.
* Source/JavaScriptCore/ftl/FTLLocation.h:
(JSC::FTL::LocationHash::hash): Deleted.
(JSC::FTL::LocationHash::equal): Deleted.
* Source/JavaScriptCore/interpreter/CallFrame.h:
(JSC::CallSiteIndexHash::hash): Deleted.
(JSC::CallSiteIndexHash::equal): Deleted.
* Source/JavaScriptCore/jit/ICStats.h:
(JSC::ICEventHash::hash): Deleted.
(JSC::ICEventHash::equal): Deleted.
* Source/JavaScriptCore/jit/JITCompilationKey.h:
(JSC::JITCompilationKeyHash::hash): Deleted.
(JSC::JITCompilationKeyHash::equal): Deleted.
* Source/JavaScriptCore/jit/Reg.h:
(JSC::RegHash::hash): Deleted.
(JSC::RegHash::equal): Deleted.
* Source/JavaScriptCore/parser/SourceCodeKey.h:
(JSC::SourceCodeKey::Hash::hash): Deleted.
(JSC::SourceCodeKey::Hash::equal): Deleted.
* Source/JavaScriptCore/profiler/ProfilerOrigin.h:
(JSC::Profiler::OriginHash::hash): Deleted.
(JSC::Profiler::OriginHash::equal): Deleted.
* Source/JavaScriptCore/profiler/ProfilerOriginStack.h:
(JSC::Profiler::OriginStackHash::hash): Deleted.
(JSC::Profiler::OriginStackHash::equal): Deleted.
* Source/JavaScriptCore/runtime/CodeCache.h:
* Source/JavaScriptCore/runtime/ControlFlowProfiler.h:
(JSC::BasicBlockKeyHash::hash): Deleted.
(JSC::BasicBlockKeyHash::equal): Deleted.
* Source/JavaScriptCore/runtime/PrototypeKey.h:
(JSC::PrototypeKeyHash::hash): Deleted.
(JSC::PrototypeKeyHash::equal): Deleted.
* Source/JavaScriptCore/runtime/TypeProfiler.h:
(JSC::QueryKeyHash::hash): Deleted.
(JSC::QueryKeyHash::equal): Deleted.
* Source/JavaScriptCore/runtime/VarOffset.h:
(JSC::VarOffsetHash::hash): Deleted.
(JSC::VarOffsetHash::equal): Deleted.
* Source/WTF/wtf/GenericHashKey.h:
* Source/WTF/wtf/HashFunctions.h:
* Source/WebCore/platform/Cookie.h:
(WebCore::CookieHash::hash): Deleted.
(WebCore::CookieHash::equal): Deleted.
* Source/WebCore/platform/Site.h:
(WebCore::Site::Hash::hash): Deleted.
(WebCore::Site::Hash::equal): Deleted.
* Source/WebCore/platform/graphics/FontCache.cpp:
(WebCore::FontDataCacheKeyHash::hash): Deleted.
(WebCore::FontDataCacheKeyHash::equal): Deleted.
* Source/WebCore/platform/graphics/FontPlatformData.h:
* Source/WebCore/platform/graphics/WidthCache.h:
(WebCore::WidthCache::SmallStringKeyHash::hash): Deleted.
(WebCore::WidthCache::SmallStringKeyHash::equal): Deleted.
* Source/WebCore/rendering/CSSValueKey.h:
(WTF::CSSValueKeyHash::hash): Deleted.
(WTF::CSSValueKeyHash::equal): Deleted.
* Source/WebCore/rendering/TextAutoSizing.h:
(WebCore::TextAutoSizingHash::hash): Deleted.
(WebCore::TextAutoSizingHash::equal): Deleted.
* Source/WebKit/Shared/WebFoundTextRange.h:
(WTF::WebFoundTextRangePDFDataHash::hash): Deleted.
(WTF::WebFoundTextRangePDFDataHash::equal): Deleted.
(WTF::WebFoundTextRangeHash::hash): Deleted.
(WTF::WebFoundTextRangeHash::equal): Deleted.
* Source/WebKit/UIProcess/Extensions/WebExtensionMatchPattern.h:
(WTF::WebExtensionMatchPatternHash::hash): Deleted.
(WTF::WebExtensionMatchPatternHash::equal): Deleted.

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



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

Reply via email to