Bug 58154 - Add support for comparison operators to the DFG JIT.
Reviewed by Oliver Hunt.
Add support for <, <=, ==, ===, and also !. Add support for all corresponding
bytecode ops, including the not- and -null forms. Initially add functionally
correct support, we'll revisit the performance.
- dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::ByteCodeParser):
(JSC::DFG::ByteCodeParser::constantNull):
(JSC::DFG::ByteCodeParser::parse):
- Add support for parsing of bytecode opcodes,
- dfg/DFGJITCodeGenerator.h:
(JSC::DFG::JITCodeGenerator::callOperation):
- Add new operation call types, return bool values.
- dfg/DFGNode.h:
- dfg/DFGNonSpeculativeJIT.cpp:
(JSC::DFG::NonSpeculativeJIT::compile):
- Add code generation for new nodes.
(JSC::DFG::operationCompareLess):
(JSC::DFG::operationCompareLessEq):
(JSC::DFG::operationCompareEq):
(JSC::DFG::operationCompareStrictEq):
(JSC::DFG::dfgConvertJSValueToBoolean):
- dfg/DFGOperations.h:
- Add operation callbacks to implement new ops.
- dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compile):
- Add code generation for new nodes.
(JSC::JIT::privateCompileCTIMachineTrampolines):
- Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate.
- jit/JITPropertyAccess.cpp:
(JSC::JIT::privateCompilePatchGetArrayLength):
- Switched to a simpler <0 check, rather than relying on an internal value in JSImmediate.
- runtime/JSImmediate.h:
- Make tag values public, rather than relying on a friend - this matches JSVALUE32_64.