| Index: src/ia32/code-stubs-ia32.cc
|
| diff --git a/src/ia32/code-stubs-ia32.cc b/src/ia32/code-stubs-ia32.cc
|
| index 6480e7483d49d4e9c05fec67040b008ee6604834..dc8c517d95bf3a2defd86a1225530664bfb5fd51 100644
|
| --- a/src/ia32/code-stubs-ia32.cc
|
| +++ b/src/ia32/code-stubs-ia32.cc
|
| @@ -1894,21 +1894,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);
|
|
|