Index: src/x87/code-stubs-x87.cc |
diff --git a/src/x87/code-stubs-x87.cc b/src/x87/code-stubs-x87.cc |
index c7a6d23dc74abd3b4a05e57aecf82bd3cd52871c..cf2f0b3e0d416aeacd9820c83193ecaaa0d91d38 100644 |
--- a/src/x87/code-stubs-x87.cc |
+++ b/src/x87/code-stubs-x87.cc |
@@ -1605,21 +1605,26 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) { |
__ push(eax); |
// Figure out which native to call and setup the arguments. |
- Builtins::JavaScript builtin; |
- if (cc == equal) { |
- builtin = strict() ? Builtins::STRICT_EQUALS : Builtins::EQUALS; |
+ if (cc == equal && strict()) { |
+ __ push(ecx); |
+ __ TailCallRuntime(Runtime::kStrictEquals, 2, 1); |
} else { |
- builtin = |
- is_strong(strength()) ? Builtins::COMPARE_STRONG : Builtins::COMPARE; |
- __ push(Immediate(Smi::FromInt(NegativeComparisonResult(cc)))); |
- } |
+ Builtins::JavaScript builtin; |
+ if (cc == equal) { |
+ builtin = Builtins::EQUALS; |
+ } else { |
+ builtin = |
+ is_strong(strength()) ? Builtins::COMPARE_STRONG : Builtins::COMPARE; |
+ __ push(Immediate(Smi::FromInt(NegativeComparisonResult(cc)))); |
+ } |
- // Restore return address on the stack. |
- __ push(ecx); |
+ // Restore return address on the stack. |
+ __ push(ecx); |
- // Call the native; it returns -1 (less), 0 (equal), or 1 (greater) |
- // tagged as a small integer. |
- __ InvokeBuiltin(builtin, JUMP_FUNCTION); |
+ // Call the native; it returns -1 (less), 0 (equal), or 1 (greater) |
+ // tagged as a small integer. |
+ __ InvokeBuiltin(builtin, JUMP_FUNCTION); |
+ } |
__ bind(&miss); |
GenerateMiss(masm); |