Index: src/ppc/code-stubs-ppc.cc |
diff --git a/src/ppc/code-stubs-ppc.cc b/src/ppc/code-stubs-ppc.cc |
index b136b7dd2bcd7c9cd6d3608fb0baf7186ad52394..303c85737f32ec210e0e0f59bcafc6f6f7f5c0de 100644 |
--- a/src/ppc/code-stubs-ppc.cc |
+++ b/src/ppc/code-stubs-ppc.cc |
@@ -716,26 +716,30 @@ void CompareICStub::GenerateGeneric(MacroAssembler* masm) { |
__ Push(lhs, rhs); |
// Figure out which native to call and setup the arguments. |
- Builtins::JavaScript native; |
- if (cc == eq) { |
- native = strict() ? Builtins::STRICT_EQUALS : Builtins::EQUALS; |
+ if (cc == eq && strict()) { |
+ __ TailCallRuntime(Runtime::kStrictEquals, 2, 1); |
} else { |
- native = |
- is_strong(strength()) ? Builtins::COMPARE_STRONG : Builtins::COMPARE; |
- int ncr; // NaN compare result |
- if (cc == lt || cc == le) { |
- ncr = GREATER; |
+ Builtins::JavaScript native; |
+ if (cc == eq) { |
+ native = Builtins::EQUALS; |
} else { |
- DCHECK(cc == gt || cc == ge); // remaining cases |
- ncr = LESS; |
+ native = |
+ is_strong(strength()) ? Builtins::COMPARE_STRONG : Builtins::COMPARE; |
+ int ncr; // NaN compare result |
+ if (cc == lt || cc == le) { |
+ ncr = GREATER; |
+ } else { |
+ DCHECK(cc == gt || cc == ge); // remaining cases |
+ ncr = LESS; |
+ } |
+ __ LoadSmiLiteral(r3, Smi::FromInt(ncr)); |
+ __ push(r3); |
} |
- __ LoadSmiLiteral(r3, Smi::FromInt(ncr)); |
- __ push(r3); |
- } |
- // Call the native; it returns -1 (less), 0 (equal), or 1 (greater) |
- // tagged as a small integer. |
- __ InvokeBuiltin(native, JUMP_FUNCTION); |
+ // Call the native; it returns -1 (less), 0 (equal), or 1 (greater) |
+ // tagged as a small integer. |
+ __ InvokeBuiltin(native, JUMP_FUNCTION); |
+ } |
__ bind(&miss); |
GenerateMiss(masm); |