The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch for DoubleEqualOrUnordered, however this is incorrect – ConditionEQ won't branch on unordered operands. Similarly, DoubleLessThanOrUnordered & DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO & ARMv7Assembler::ConditionLS, whereas they should be using ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE. As a consequence, the JIT may currently incorrectly branch on double comparisons to NaN, for example, "if (Number.NaN < 0) print("Oh noes it isn't!");" Fix these, and fill out the missing DoubleConditions.
Created attachment 42541 [details] The patch
Sending JavaScriptCore/ChangeLog Sending JavaScriptCore/assembler/MacroAssemblerARMv7.h Transmitting file data .. Committed revision 50541.