Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 4cce27133ecf45fa3abcba95ae4d8e1631be8b1c
      
https://github.com/WebKit/WebKit/commit/4cce27133ecf45fa3abcba95ae4d8e1631be8b1c
  Author: Yusuke Suzuki <[email protected]>
  Date:   2026-10-09 (Fri, 09 Oct 2026)

  Changed paths:
    A JSTests/microbenchmarks/number-isFinite-untyped.js
    A JSTests/microbenchmarks/number-isNaN-untyped.js
    A JSTests/microbenchmarks/number-isSafeInteger-untyped.js
    A JSTests/stress/ftl-number-is-predicates-untyped.js
    M Source/JavaScriptCore/dfg/DFGOperations.cpp
    M Source/JavaScriptCore/dfg/DFGOperations.h
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp
    M Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h
    M Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp

  Log Message:
  -----------
  [JSC] Inline the double case of Number.isNaN, Number.isFinite, and 
Number.isSafeInteger
https://bugs.webkit.org/show_bug.cgi?id=326780
rdar://189490653

Reviewed by Sosuke Suzuki.

These functions are super simple, they only handle Numbers, so fully
inlined implementation is better than calling operations. This patch
implements them inline in DFG and FTL.

                                         ToT                     Patched

number-isNaN-untyped               13.1354+-1.1964     ^      6.4662+-0.2915    
    ^ definitely 2.0314x faster
number-isFinite-untyped            12.8102+-0.3558     ^      5.7878+-0.2075    
    ^ definitely 2.2133x faster
number-isSafeInteger-untyped       14.9957+-0.9784     ^      6.4072+-0.6848    
    ^ definitely 2.3405x faster

Tests: JSTests/microbenchmarks/number-isFinite-untyped.js
       JSTests/microbenchmarks/number-isNaN-untyped.js
       JSTests/microbenchmarks/number-isSafeInteger-untyped.js
       JSTests/stress/ftl-number-is-predicates-untyped.js

* JSTests/microbenchmarks/number-isFinite-untyped.js: Added.
* JSTests/microbenchmarks/number-isNaN-untyped.js: Added.
* JSTests/microbenchmarks/number-isSafeInteger-untyped.js: Added.
* JSTests/stress/ftl-number-is-predicates-untyped.js: Added.
(shouldBe):
(isFiniteTest):
(isSafeIntegerTest):
* Source/JavaScriptCore/dfg/DFGOperations.cpp:
(JSC::DFG::JSC_DEFINE_NOEXCEPT_JIT_OPERATION):
* Source/JavaScriptCore/dfg/DFGOperations.h:
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::emitDoubleIsNaN):
(JSC::DFG::SpeculativeJIT::emitDoubleIsFinite):
(JSC::DFG::SpeculativeJIT::emitDoubleIsSafeInteger):
(JSC::DFG::SpeculativeJIT::unboxDoubleForNumberPredicate):
(JSC::DFG::SpeculativeJIT::compileNumberIsNaN):
(JSC::DFG::SpeculativeJIT::compileNumberIsFinite):
(JSC::DFG::SpeculativeJIT::compileNumberIsSafeInteger):
* Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h:
* Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCompareStrictEq):

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



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

Reply via email to