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