| Index: src/x87/code-stubs-x87.cc
|
| diff --git a/src/x87/code-stubs-x87.cc b/src/x87/code-stubs-x87.cc
|
| index 4e39ab86297a8e52f75f198763eacb4e6da7e9d8..e6fc7b83e49a3b98b7fdb37d84e2b97ec37da04c 100644
|
| --- a/src/x87/code-stubs-x87.cc
|
| +++ b/src/x87/code-stubs-x87.cc
|
| @@ -3258,7 +3258,7 @@ void CompareICStub::GenerateSmis(MacroAssembler* masm) {
|
| void CompareICStub::GenerateNumbers(MacroAssembler* masm) {
|
| DCHECK(state() == CompareICState::NUMBER);
|
|
|
| - Label generic_stub;
|
| + Label generic_stub, check_left;
|
| Label unordered, maybe_undefined1, maybe_undefined2;
|
| Label miss;
|
|
|
| @@ -3271,13 +3271,13 @@ void CompareICStub::GenerateNumbers(MacroAssembler* masm) {
|
|
|
| // Inlining the double comparison and falling back to the general compare
|
| // stub if NaN is involved or SSE2 or CMOV is unsupported.
|
| - __ mov(ecx, edx);
|
| - __ and_(ecx, eax);
|
| - __ JumpIfSmi(ecx, &generic_stub, Label::kNear);
|
| -
|
| + __ JumpIfSmi(eax, &check_left, Label::kNear);
|
| __ cmp(FieldOperand(eax, HeapObject::kMapOffset),
|
| isolate()->factory()->heap_number_map());
|
| __ j(not_equal, &maybe_undefined1, Label::kNear);
|
| +
|
| + __ bind(&check_left);
|
| + __ JumpIfSmi(edx, &generic_stub, Label::kNear);
|
| __ cmp(FieldOperand(edx, HeapObject::kMapOffset),
|
| isolate()->factory()->heap_number_map());
|
| __ j(not_equal, &maybe_undefined2, Label::kNear);
|
|
|