DFG OSR exit for UInt32ToNumber should roll forward, not roll backward
https://bugs.webkit.org/show_bug.cgi?id=74463
Source/JavaScriptCore:
Reviewed by Gavin Barraclough.
Implements roll-forward OSR exit for UInt32ToNumber, which requires ValueRecoveries knowing
how to execute the slow path of UInt32ToNumber.
(JSC::CodeBlock::lastOSRExit):
(JSC::CodeOrigin::operator!=):
- bytecode/ValueRecovery.h:
(JSC::ValueRecovery::uint32InGPR):
(JSC::ValueRecovery::gpr):
(JSC::ValueRecovery::dump):
- dfg/DFGAssemblyHelpers.cpp:
- dfg/DFGAssemblyHelpers.h:
- dfg/DFGOSRExit.h:
(JSC::DFG::OSRExit::valueRecoveryForOperand):
- dfg/DFGOSRExitCompiler32_64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGOSRExitCompiler64.cpp:
(JSC::DFG::OSRExitCompiler::compileExit):
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileUInt32ToNumber):
(JSC::DFG::SpeculativeJIT::compileGetByValOnIntTypedArray):
- dfg/DFGSpeculativeJIT.h:
- dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativeUInt32ToNumber):
(JSC::DFG::SpeculativeJIT::compile):
- dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::nonSpeculativeUInt32ToNumber):
(JSC::DFG::SpeculativeJIT::compile):
LayoutTests:
Reviewed by Gavin Barraclough.
- fast/js/dfg-uint32-to-number-expected.txt: Added.
- fast/js/dfg-uint32-to-number.html: Added.
- fast/js/script-tests/dfg-uint32-to-number.js: Added.
(foo):